Git: fusionar rama en maestro

Git: fusionar rama en maestro

En 2020, Git (junto con las principales plataformas de alojamiento de repositorios como GitHub, GitLab, etc.) adoptó un cambio en la terminología y el nombre de rama predeterminado es “principal”, debido a las connotaciones negativas de la palabra “maestro”. puede implicar. Muchos proyectos no han migrado o cambiado el nombre de sus ramas principales, por lo que en el futuro previsible, los términos “maestro” y “principal” probablemente se usarán indistintamente.

Una de las características más poderosas de Git es la capacidad de crear y fusionar ramas fácilmente. La naturaleza distribuida de Git alienta a los usuarios a crear nuevas ramas con frecuencia y fusionarlas regularmente como parte del proceso de desarrollo. Esto mejora fundamentalmente el flujo de trabajo de desarrollo para la mayoría de los proyectos al fomentar compromisos granulares más pequeños, más enfocados.

En los Sistemas de control de versiones heredados (como CVS), la dificultad de fusionarse lo restringía a usuarios avanzados. Otros sistemas de control de versiones modernos pero centralizados, como Subversion, requieren que se realicen confirmaciones en un repositorio central, por lo que un flujo de trabajo ágil con ramificaciones y fusiones locales es atípico.

Un flujo de trabajo de ramificación de uso común en Git es crear una nueva rama de código para cada nueva función, corrección de errores o mejora. Estos se denominan Ramas de características. Cada rama compartimenta las confirmaciones relacionadas con una función en particular. Una vez que se completa la nueva función, es decir, se ha confirmado un conjunto de cambios en la rama de función, está lista para volver a fusionarse con la rama maestra (u otra rama de línea de código principal según el flujo de trabajo en uso).

{.icon aria-hidden=“true”}

Nota: La bifurcación de características no es el único flujo de trabajo de bifurcación con el que puede ir, pero es ampliamente adoptado.

El comando git branch se usa para listar todas las ramas existentes en un repositorio. Aparecerá un asterisco junto a la rama actualmente activa.

1
2
$ git branch
* master

Para crear una nueva rama, podemos usar el comando git branch new-branch. Esto creará una nueva rama reflejando las confirmaciones en la rama actualmente activa:

1
2
3
4
$ git branch new-branch
$ git branch
* master
new-branch

Como un breve aparte, tenga en cuenta que, detrás de escena, Git en realidad no crea un nuevo conjunto de confirmaciones para representar la nueva rama. En Git, una rama es en realidad solo una etiqueta. Es una etiqueta que podemos usar para hacer referencia a una cadena particular de confirmaciones. Sería ineficiente duplicar un conjunto de confirmaciones detrás de escena, por lo que Git nos permite crear múltiples conjuntos divergentes de confirmaciones desde una sola base.

En este punto, hemos creado una nueva rama, pero todavía estamos ubicados en la rama de origen. Para comenzar a trabajar en la nueva rama, primero debemos ejecutar el comando git checkout new-branch. Esto cambiará la rama activa a la nueva rama:

1
2
3
4
5
$ git checkout new-branch
Switched to branch new-branch'
$ git branch
master
* new-branch

En este punto, se pueden realizar confirmaciones en la nueva rama para implementar la nueva función. Una vez que se completa la función, la rama se puede fusionar nuevamente con la rama del código principal.

Primero ejecutamos git checkout master para cambiar la rama activa de nuevo a la rama master. Luego ejecutamos el comando git merge new-branch para fusionar la nueva función en la rama principal.

{.icon aria-hidden=“true”}

Nota: git merge fusiona la rama especificada con la rama actualmente activa. Así que tenemos que estar en la rama en la que nos estamos fusionando.

Si está fusionando una nueva función en la rama principal, primero debe cambiar a la rama principal y luego fusionarse con ella:

1
2
3
4
5
6
7
# ...develop some code...

$ git add A
$ git commit m "Some commit message"
$ git checkout master
Switched to branch 'master'
$ git merge new-branch

Si todo va bien, nuestro trabajo habrá terminado. Las confirmaciones de funciones nuevas ahora aparecen en la rama principal. Sin embargo, es posible que Git no pueda completar la fusión debido a un cambio de conflicto en la rama de origen. Esto se denomina conflicto de fusión.

If you'd like to read more about Merge Conflicts, how they can arise and how to resolve them - read our Git: Guía para resolver conflictos de fusión!

Para resumir, aquí están los comandos para crear una nueva rama, realizar algunas confirmaciones y fusionarla nuevamente en la maestra:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$ git checkout master
$ git branch new-branch
$ git checkout new-branch

# ...develop some code...

$ git add A
$ git commit m "Some commit message"
$ git checkout master
$ git merge new-branch

Sobre el autor

Este artículo fue escrito por Jacob Stopak, un consultor y desarrollador de software apasionado por ayudar a otros a mejorar sus vidas a través del código. Jacob es el creador de Compromiso inicial, un sitio dedicado a ayudar a los desarrolladores curiosos a aprender cómo se codifican sus programas favoritos. Su proyecto destacado ayuda a las personas aprender git a nivel de código.

Licensed under CC BY-NC-SA 4.0