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 -