Git
git branch

git branch comando: crear, eliminar, checkout, lista, cambiar nombre, opción

En este post, cubriremos cómo entender correctamente las ramas y cómo crear, borrar, cambiar, verificar, renombrar y otras opciones usando el comando git branch.

1. Entendiendo git branch

Las ramas son una característica clave de la colaboración en Git. En los sistemas de archivos tradicionales, si querías modificar el mismo archivo al mismo tiempo, la única manera de hacerlo era hacer copias, modificarlas por separado, y luego fusionarlas de nuevo manualmente. Con las ramas, Git permite realizar diferentes operaciones sobre el mismo archivo al mismo tiempo, casi como un multiverso.

El principio en el que se basa esta útil función es, en realidad, bastante sencillo. En los posts anteriores git add y git commit, mencionamos que un objeto commit, que almacena información sobre un único commit, tiene un ID para su commit padre. El historial de confirmaciones está eventualmente enlazado por el ID de la confirmación padre para cada confirmación.

Una rama es sólo una etiqueta de nombre que apunta a la confirmación más reciente en este historial de confirmaciones. Si estamos trabajando en la rama main, el nombre de la rama main tiene el ID de la última confirmación en el historial de confirmaciones actual.

Esto se parece a la siguiente imagen

git main branch description 1

Como la confirmación B conoce el ID de la confirmación A, 2b89, las dos confirmaciones pueden enlazarse por el historial. Y como la rama llamada main conoce el ID de la confirmación B, 991b, que es la última confirmación en ese historial, llamamos a la rama actual main.

Si hiciéramos un nuevo commit en la rama actual, el ID del último commit en la etiqueta main cambiaría al ID del nuevo commit.

Esto tendría el siguiente aspecto

git main branch description 2

De esta forma, el ID del último commit es la única información utilizada para implementar la función de rama. E incluso cambiar de rama, que veremos en la siguiente sección, es sólo cuestión de saltar al commit apropiado basándose en el iD de la lista de ramas.

Si fuéramos a crear una nueva rama y hacer un nuevo commit en esa rama, se vería algo como esto

git main branch description 3

Si creas una nueva rama llamada topicA en la rama main, tanto main como topicA apuntarán a v274. Cuando creas un nuevo commit en la rama topicA, la rama topicA cambia para apuntar al ID del commit D 1g8c.

En esta situación, cambiar a la rama main te llevaría a la confirmación C, y volver a la rama topicA te llevaría a la confirmación D. Es importante recordar que una rama es una etiqueta de nombre para el ID de la última confirmación.

2. Obteniendo una lista de ramas locales y remotas

El comando para ver todas las ramas en el repositorio local actual es

$ git branch

En este caso, la rama marcada con un * es la rama de trabajo actual. El resultado de la ejecución será

git branch execution result

El comando de listado git branch está disponible con las opciones -r y -a. Úsalas para imprimir sólo las ramas remotas, o tanto las locales como las remotas.

Utilízalas de la siguiente forma

Resultados de ejecutar las opciones de git branch

3. Crear una nueva rama

Para crear una nueva rama que apunte al mismo commit que la rama actual, puedes usar tres comandos, con ligeras diferencias.

En primer lugar, el comando de abajo es el comando más básico de creación de ramas.

$ git branch <new-branch-name>

El segundo comando consiste en crear una rama y desplazarse inmediatamente a ella. Puede omitir el paso de crear y luego mover.

$ git checkout -b <new-branch-name>

El último comando es más reciente que checkout y produce el mismo resultado. Este es el método recomendado.

 $ git switch -c <new-branch-name>

Aquí está el resultado de la ejecución

git switch -c resultado de la ejecución

Tras crear una nueva rama como se ha descrito, se ha realizado el cambio en dicha rama.

4. Copia la rama remota a tu entorno local

Para copiar una rama creada en un repositorio remoto a tu entorno local, utiliza la opción -t con el comando checkout o switch. Si no especifica un nuevo nombre de rama, se copiará con el mismo nombre que la rama remota.

$ git checkout -t <remote-name>/<branch-name>

o

$ git switch -c <new-branch-name> -t <remote-name>/<branch-name>

Aquí está el resultado de la ejecución

git switch -c -t resultado de la ejecución

Se ha creado una rama feature-a en tu entorno local, siguiendo la rama feature-a en el repositorio remoto.

5. Moverse a la rama de cambios

Hay dos comandos que puede utilizar para cambiar la rama en la que está trabajando. Son checkout y switch. checkout es un comando tradicional que te permite navegar no sólo por ramas, sino también por commits, etiquetas y otros criterios. switch es un comando relativamente nuevo que fue creado únicamente para la manipulación de ramas. Para un uso seguro de Git, recomendamos usar el comando switch con su funcionalidad limitada.

He aquí cómo utilizar ambos comandos

$ git checkout <branch-name>

o

$ git switch <branch-name>

Este es el resultado de la ejecución git checkout, switch execution result

6. Cómo borrar y deshacer el borrado de una rama

Hay dos formas de borrar una rama Git. La primera es borrar una rama que ya ha sido fusionada, y la segunda es borrar una rama que no ha sido fusionada.

6.1. Borrar una rama

El comando para borrar una rama que ha sido fusionada es el siguiente. No puedes borrar la rama en la que estoy trabajando actualmente, así que por favor ve a otra rama y entra en ella.

$ git branch -d <branch-name-merged>

En este caso, la confirmación de fusión tiene el último ID de confirmación de la rama que está borrando como su ID de confirmación padre. Por lo tanto, todos los commits que pertenecían a la rama permanecerán en el historial de commits de este repositorio.

Estos son los comandos para borrar una rama que no ha sido fusionada.

$ git branch -D <branch-name-not-merged>

En este caso, el puntero a la confirmación que pertenecía a la rama que estás borrando desaparece. Esto se conoce como un estado de confirmación colgado o huérfano, y el recolector de basura de Git se encarga de limpiar estas confirmaciones inaccesibles.

Primero, veamos el resultado de borrar una rama fusionada.

1Resultados de borrar una rama tras una fusión

El gráfico de registro de git muestra que hemos fusionado la rama feature-c con la rama develop. Si luego borras la rama feature-c y vuelves a imprimir el gráfico de registro, la rama feature-c habrá desaparecido, pero los commits de esa rama seguirán en el historial.

Esto se debe a que el commit de fusión, 0dd7b0b, tiene los IDs tanto del commit 80d10f1 en la rama develop como del commit 8480ae1 en la rama feature-c.

Este es el resultado de borrar la rama no fusionada

git branch -D resultado de la ejecución

Si miras el gráfico de registro de arriba, puedes ver que hemos creado una nueva rama feature-d en la rama develop y hemos hecho un nuevo commit. Después borramos la rama feature-d sin fusionarla, y desapareció del gráfico de registro.

6.2. Deshacer el borrado de una rama

Por último, vamos a ver cómo deshacer el borrado accidental de una rama. Como habrás notado, el comando borrar rama imprime un mensaje de éxito y el ID de la última confirmación a la que apuntaba la rama. Por ejemplo, 3a31806 en el mensaje Deleted branch feature-d (was 3a31806). Puedes ver esto en la captura de pantalla anterior.

Para deshacer el borrado de una rama, necesitas usar un commit ID como este. El comando tiene este aspecto Pon el ID de confirmación en la parte <base-commit-id>.

$ git branch <branch-name> <base-commit-id>

Vamos a revertir las dos ramas que borramos arriba con este comando

git branch undelete result

El historial de confirmaciones tendrá este aspecto

git branch undelete resultado 2

Puedes ver que las ramas feature-c, feature-d han sido resucitadas de sus ubicaciones anteriores.

6.3. Borrar una rama remota

Todos los servicios de alojamiento Git soportan el borrado de una rama remota con una GUI, pero también puedes borrarla con un comando.

El comando tiene el siguiente aspecto.

$ git push <remote-name> --delete <branch-name>

Este es el resultado de ejecutar

git push origin --delete run result

Si hay una rama en tu entorno local que sigue a la rama remota que has borrado, no se borrará junto con ella. Por favor, bórrala usando el comando que aprendimos en la Sección 61 .

7. Conclusión

El comando git branch es la base para trabajar en múltiples proyectos a la vez, y son estos conceptos los que hemos cubierto. Espero que este artículo te haya ayudado a entender y usar branch correctamente.

copyright for git branch

© 2023 All rights reserved.