Fusión de ramas sin avance rápido en Git

Azhar Bashir Khan 6 febrero 2022
Fusión de ramas sin avance rápido en Git

Este tutorial verá cómo fusionar ramas sin avance rápido en Git.

Usamos Git para trabajar en un entorno de desarrollo colaborativo. Creamos muchas ramas para diferentes propósitos y, finalmente, fusionamos esas ramas en la rama principal para proporcionar una compilación de lanzamiento.

Fusionamos ramas en Git con avance rápido o sin avance rápido.

Ahora ilustraremos esto con un ejemplo.

Uso del comando git merge con y sin la opción --no-ff (sin avance rápido) en Git

En un entorno de desarrollo colaborativo, a menudo creamos varias ramas en Git para cumplir diferentes propósitos. Finalmente, fusionamos esas ramas en la rama principal para proporcionar una versión de lanzamiento.

A veces, el commit HEAD de nuestra rama principal es un ancestro de el commit de la rama que estamos tratando de fusionar. En tales casos, la fusión se realiza con avance rápido.

Una fusión de avance rápido puede ocurrir cuando una ruta lineal desde la punta de la rama actual hasta la rama de destino. Supongamos que tenemos la rama feature1 y la estamos fusionando en main, nuestra rama principal.

Ahora, supongamos que el compromiso HEAD de la rama main es un ancestro del compromiso de la rama feature1, la que queremos fusionar.

En tales casos, en lugar de fusionar las ramas, todo lo que Git tiene que hacer para integrar las historias es mover (es decir, avanzar rápidamente la punta de la rama actual hasta la punta de la rama de destino).

Por lo tanto, en nuestro caso, con el avance rápido, el HEAD actual de la rama main se moverá hacia arriba hasta la punta de la rama feature1.

Vea a continuación una ilustración de la situación de las ramas, main y feature1, antes de la fusión.

              E---F---G feature1
             /
A---B---C---D main

Por lo tanto, ocurrirá un avance rápido cuando fusionemos las dos ramas usando el comando git merge.

Para hacer una fusión, ejecutamos el comando do de la siguiente manera.

$ git merge feature1

Después de ejecutar el comando, la rama main se avanzará rápidamente.

Consulte la ilustración del avance rápido a continuación.

              E---F---G feature1, main
             /
A---B---C---D

Por lo tanto, ahora la rama main actual HEAD ahora se avanza rápidamente. No se crea un commit de fusión en este caso.

A veces, es posible que queramos hacer una combinación real en lugar de un avance rápido. Digamos que queremos mantener la topología de rama.

En tal caso, podemos usar el comando git merge con la opción --no-ff.

La opción de comando --no-ff hace que se cree un commit de combinación en todos los casos, incluso cuando la combinación podría resolverse como un avance rápido.

Por lo tanto, en nuestro caso, para realizar una fusión sin avance rápido, debemos hacer lo siguiente.

$ git merge --no-ff feature1

Por lo tanto, ahora el comando git merge fusiona la rama feaure1 en la rama main y genera un commit de fusión (incluso si se trata de una fusión de avance rápido).

Esto es útil para documentar todas las fusiones que ocurren en su repositorio.

Por lo tanto, hemos explicado cómo fusionar las ramas sin avance rápido en Git.

Para mayor información por favor visite -

  1. Git Merge
  2. git-merge

Artículo relacionado - Git Merge