La capacidad de fusión fácil de git es una de sus fortalezas. Durante una fusión, GIT usa fusiones rápidas cuando se da cuenta de que el jefe de la rama actual es un antepasado del compromiso que está tratando de fusionar. En una fusión rápida, no hay un nuevo compromiso. Git solo mueve el puntero. Si este comportamiento no es deseable, puede usar el indicador No-FF para crear una nueva confirmación para la fusión.
Cómo se ve la fusión con y sin avance rápido
Después de un avance rápido, su historial de git se verá así:
C0 -> C1 -> C2-> C3
Para el mismo número de compromisos, aquí hay una historia de fusión sin avance rápido:
En el primer caso, no hay indicios de que hubiera una ramificación. En el segundo caso, la historia muestra un compromiso C4 para indicar dónde ocurrió la fusión.
Caminando por un ejemplo
Creará un repositorio de git, creará una rama y luego probará las fusiones con y sin avance rápido.
Primero, puede crear el repositorio Git con los siguientes pasos:
$ mkdir my_projectAhora creemos una rama llamada características y cometamos algunos cambios:
Características de la rama de $ gitVolvamos a la rama maestra y fusionemos la rama de las características:
$ git checkout maestro
$ git fusion Features
Producción:
Actualización 08076FB ... 9EE88EBSi verifica el historial, verá:
$ git log -ennelineEntonces, todos los compromisos de la rama de características están en la rama maestra ahora. Si continúa haciendo cambios en Master, no hay forma de saber cuándo se fusionó la rama de las características.
Repita la Sección 1 para una nueva carpeta.
Luego, pruebe una fusión sin avance rápido:
$ git checkout maestro
$ git fusion-no-ff función
Se abrirá lo siguiente en el editor de texto predeterminado de su GIT:
Fusionar 'características de la rama'
# Ingrese un mensaje de confirmación para explicar por qué esta fusión es necesaria,
# Especialmente si fusiona un río arriba actualizado en una rama de temas.
#
# Las líneas que comienzan con '#' serán ignoradas y un mensaje vacío aborta
# el compromiso.
Modificar los comentarios. En este caso, solo puede agregar "C4:" antes de las características de "fusionar rama" ". La salida debería verse así:
Fusionar hecha por la estrategia 'recursiva'.Ahora, si verifica el historial, debería verse como lo siguiente:
$ git log -ennelinePuede ver que aunque tiene exactamente los mismos cambios, esta versión de Merge tiene la confirmación adicional de C4 que significa la fusión de características ramificadas en maestro.
Conclusión
La bandera Git Merge No-FF ayuda a crear una historia más legible. Le permite colocar etiquetas que muestran claramente dónde ocurrieron las fusiones. Puede ahorrarle tiempo y esfuerzo durante la depuración.