Original article: Git Switch Branch – How to Change the Branch in Git
Cambiar de rama es algo que debes hacer con frecuencia en Git.
Para hacer esto, puedes usar el comando git checkout
.
Cómo crear una nueva rama en Git
Para crear una nueva rama en Git, usa el comando git checkout
y pasa el indicador -b
con un nombre.
Esto creará una nueva rama a partir de la rama actual. El historial de la nueva rama comenzará en el lugar actual de la rama de la que "se ramificó".
Suponiendo que actualmente te encuentras en una rama llamada master
:
(master)$ git checkout -b mi-función
Switched to a new branch 'mi-función'
(mi-función)$
Aquí puedes ver una nueva rama creada llamada mi-función
que se ramificó de master
.
Cómo cambiar a una rama existente en Git
Para cambiar a una rama existente, puedes usar git checkout
nuevamente (sin el indicador -b
) y pasar el nombre de la rama a la que desea cambiar:
(mi-función)$ git checkout master
Switched to branch 'master'
(master)$
También hay un atajo útil para volver a la rama anterior en la que estabas, pasando -
a git checkout
en lugar de un nombre de rama:
(mi-función)$ git checkout -
Switched to branch 'master'
(master)$ git checkout -
Switched to branch 'mi-función'
(mi-función)$
Cómo salir una confirmación específica
Para salir o cambiar una confirmación específica, también puedes usar git checkout
y pasar el SHA de la confirmación en lugar de un nombre de rama.
Después de todo, las ramas en realidad solo son indicadores y rastreadores de confirmaciones específicas en el historial de Git.
Cómo encontrar un SHA de una confirmación
Una forma de encontrar el SHA de una confirmación es ver el registro de Git.
Puedes ver el registro usando el comando git log
:
(mi-función)$ git log
commit 94ab1fe28727b7f8b683a0084e00a9ec808d6d39 (HEAD -> mi-función, master)
Author: John Mosesman <johnmosesman@gmail.com>
Date: Mon Apr 12 10:31:11 2021 -0500
Este es el segundo mensaje de confirmación.
commit 035a128d2e66eb9fe3032036b3415e60c728f692 (blah)
Author: John Mosesman <johnmosesman@gmail.com>
Date: Mon Apr 12 10:31:05 2021 -0500
Este es el primer mensaje de confirmación.
En la primera línea de cada confirmación, después de la palabra commit
, hay una larga cadena de caracteres y números: 94ab1fe28727...
Esto se llama SHA. Un SHA es un identificador único que se genera para cada confirmación.
Para ver una confirmación específica, solo necesitas pasar el SHA de la confirmación como parámetro para git checkout
:
(mi-función)$ git checkout 035a128d2e66eb9fe3032036b3415e60c728f692
Note: switching to '035a128d2e66eb9fe3032036b3415e60c728f692'.
Estás en estado de 'HEAD separada'. Puedes mirar a tu alrededor,
hacer cambios experimental y confirmaciones, y puede descartar cualquier
confirmación que realices en este estado sin afectar a ninguna rama
cambiando de nuevo a una rama.
Si deseas crear una nueva rama para retener las confirmaciones que creas, puedes
hazlo (ahora o más tarde) usando-c con el comando switch. Ejemplo:
git switch -c <nombre-de-nueva-rama>
O deshaz esta operación con:
git switch -
Desactiva este consejo configurando el consejo de la variable de configuración. HEAD separada a falso
HEAD ahora está en 035a128 a
((HEAD separada en 035a128))$
Nota: Por lo general, solo necesitas usar los primeros caracteres de SHA—ya que los primeros cuatro o cinco caracteres de la cadena probablemente sean únicos en todo el proyecto.
¿Qué es un estado HEAD separada?
El resultado de ver una confirmación específica lo coloca en un "estado HEAD separada".
De la documentación:
[un estado HEAD separada] significa simplemente que HEAD
se refiere a una confirmación específica, en lugar de referirse a una rama nombrada
Básicamente, HEAD
(uno de los indicadores internos de Git que rastrea dónde se encuentra en el historial de Git) se ha desviado de las ramas conocidas, por lo que los cambios desde este punto formarían una nueva ruta en el historial de Git.
Git quiere asegurarse de que eso es lo que pretendes, por lo que te brinda una especie de "espacio libre" para experimentar, como se describe en el resultado:
Estás en estado de 'HEAD separada'. Puedes mirar a tu alrededor,
hacer cambios experimental y confirmaciones, y puede descartar cualquier
confirmación que realices en este estado sin afectar a ninguna rama
cambiando de nuevo a una rama.
Desde esta posición tienes dos opciones:
- Experimenta y luego desecha tus cambios volviendo a tu rama anterior
- Trabaja desde aquí y comienza una nueva rama desde este punto
Puedes usar el comando git switch -
para deshacer cualquier cambio que hayas realizado y volver a tu rama anterior.
Si, en cambio, deseas mantener tus cambios y continuar desde aquí, puedes usar git switch -c <nueva-rama-nombre>
para crear una nueva rama desde este punto.
Conclusión
El comando git checkout
es un comando útil y multipropósito.
Puedes usarlo para crear nuevas ramas, ver una rama, ver confirmaciones específicas y más.