Esta página es un examen del comando git checkout
. Cubrirá ejemplos de uso y casos extremos. En términos de Git, un «pago» es el acto de cambiar entre diferentes versiones de una entidad objetivo. El comando git checkout
opera sobre tres entidades distintas: archivos, confirmaciones y ramas. Además de la definición de «checkout», la frase «checkout» se usa comúnmente para implicar el acto de ejecutar el comando git checkout
. En el tema Deshacer cambios, vimos cómo se puede usar git checkout
para ver las confirmaciones antiguas. El enfoque de la mayor parte de este documento serán las operaciones de pago en las ramas.
La verificación de las ramas es similar a la verificación de los archivos y las confirmaciones antiguas, ya que el directorio de trabajo se actualiza para que coincida con la rama / revisión seleccionada; sin embargo, los cambios nuevos se guardan en el historial del proyecto, es decir, no es una operación de solo lectura.
Verificación de ramas
El git checkout
le permite navegar entre las ramas creadas por git branch
. Verificar una rama actualiza los archivos en el directorio de trabajo para que coincidan con la versión almacenada en esa rama, y le dice a Git que registre todas las nuevas confirmaciones en esa rama. Piense en ello como una forma de seleccionar en qué línea de desarrollo está trabajando.
Tener una rama dedicada para cada función nueva es un cambio dramático con respecto al flujo de trabajo tradicional de SVN. Hace que sea ridículamente fácil probar nuevos experimentos sin el temor de destruir la funcionalidad existente, y hace posible trabajar en muchas funciones no relacionadas al mismo tiempo. Además, las ramas también facilitan varios flujos de trabajo colaborativos.
El comando git checkout
puede confundirse ocasionalmente con git clone
. La diferencia entre los dos comandos es que la clonación funciona para obtener código de un repositorio remoto, alternativamente, el checkout funciona para cambiar entre versiones de código que ya están en el sistema local.
Uso: ramas existentes
Suponiendo que el repositorio en el que está trabajando contiene ramas preexistentes, puede cambiar entre estas ramas usando git checkout
. Para averiguar qué ramas están disponibles y cuál es el nombre de la rama actual, ejecutar git branch
.
El ejemplo anterior demuestra cómo ver una lista de ramas disponibles ejecutando el git branch
y cambie a una rama específica, en este caso, la feature_inprogress_branch
.
Nuevas ramas
Git checkout
trabaja mano a mano con git branch
. El comando git branch
puede utilizarse para crear una nueva rama. Cuando desee iniciar una nueva función, cree una nueva rama fuera de usando git branch new_branch
. Una vez creado, puede usar git checkout new_branch
para cambiar a esa rama. Además, el comando git checkout
acepta un argumento -b
que actúa como un método de conveniencia que creará la nueva rama y cambiará inmediatamente a ella. Puede trabajar en varias funciones en un solo repositorio cambiando entre ellas con git checkout
.
El ejemplo anterior simultáneamente crea y verifica . La opción
-b
es un indicador de conveniencia que le dice a Git que ejecute git branch
antes de ejecutar git checkout
.
De forma predeterminada, git checkout -b
basará el new-branch
en actual HEAD
. Se puede pasar un parámetro de rama adicional opcional a git checkout
. En el ejemplo anterior, se pasa que luego se basa
new-branch
en existing-branch
en lugar de el HEAD
actual.
Cambiar de rama
Cambiar de rama es una operación sencilla. La ejecución de lo siguiente apuntará HEAD
a la punta de .
Git rastrea un historial de operaciones de pago en el reflog. Puede ejecutar git reflog
para ver el historial.
Git Checkout a Remote Branch
Al colaborar con un equipo, es común utilizar repositorios. Estos repositorios pueden estar alojados y compartidos o pueden ser la copia local de otro colega. Cada repositorio remoto contendrá su propio conjunto de ramas. Para poder pagar una rama remota, primero debe buscar el contenido de la rama.
En las versiones modernas de Git, puede verificar la rama remota como una rama local.
Las versiones anteriores de Git requieren la creación de una nueva rama basada en remote
.
Además, puede verificar una nueva rama local y restablecerla a la última confirmación de las ramas remotas.
HEADS separados
Ahora que hemos visto los tres usos principales de git checkout
en las ramas, es importante discutir el "detached HEAD”
estado. Recuerde que HEAD
es la forma en que Git se refiere a la instantánea actual. Internamente, el git checkout
comando simplemente actualiza el HEAD
para apuntar a la rama especificada o confirmación. Cuando apunta a una rama, Git no se queja, pero cuando revisa una confirmación, cambia a un "detached HEAD”
estado.
Esta es una advertencia que le indica que todo lo que está haciendo está «separado» del resto del desarrollo de su proyecto. Si si comenzaras a desarrollar una función mientras estás en un estado HEAD
separado, no habría ninguna rama que te permitiera volver t o eso. Cuando inevitablemente revisa otra rama (por ejemplo, para fusionar su función), no habría forma de hacer referencia a su función:
El punto es, su desarrollo siempre debe tener lugar en una rama, nunca en una HEAD
separada. Esto asegura que siempre tenga una referencia a sus nuevas confirmaciones. Sin embargo, si solo estás viendo una confirmación anterior, realmente no importa si estás en un estado HEAD
separado o no.
Resumen
Esta página se centró en el uso del comando git checkout
al cambiar de rama. En resumen, git checkout
, cuando se usa en ramas, altera el objetivo de la HEAD
ref. Se puede utilizar para crear sucursales, cambiar sucursales y pagar sucursales remotas. El comando git checkout
es una herramienta esencial para el funcionamiento estándar de Git. Es una contraparte de git merge
. Los comandos git checkout
y git merge
son herramientas fundamentales para habilitar git workflows
.