Git

Opción Git Merge -no-ff

Opción Git Merge -no-ff

Comprender la opción Git Merge no-ff

La capacidad de fusión fácil de git es una de sus fortalezas. Durante una fusión, git usa la fusión de avance rápido cuando se da cuenta de que el HEAD de la rama actual es un antepasado de la confirmación que está intentando fusionar. En una combinación de avance rápido, no hay ningún nuevo compromiso. Git solo mueve el puntero. Si este comportamiento no es deseable, puede usar la marca no-ff para crear una nueva confirmación para la fusión.

Cómo se ve la fusión con y sin Fast-Forward

Después de un avance rápido, su historial de git se verá así:

C0 -> C1 -> C2-> C3

Para el mismo número de confirmaciones, aquí hay un historial de fusiones sin avance rápido:

En el primer caso, no hay indicios de que haya ramificaciones. En el segundo caso, el historial 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.

Sección 1: Configuración

Primero, puede crear el repositorio de git con los siguientes pasos:

$ mkdir my_project
$ cd mi_proyecto
$ git init
$ tocar un.TXT
$ git add -A
$ git commit -m "C0: agregando un.TXT"

Ahora creemos una rama llamada características y realicemos algunos cambios:

Funciones de $ git branch
$ git checkout características
$ toque b.TXT
$ git add -A
$ git commit -m "C1: Añadiendo b.TXT"
$ toque c.TXT
$ git add -A
$ git commit -m "C2: Añadiendo c.TXT"
$ toque d.TXT
$ git add -A
$ git commit -m "C3: Añadiendo d.TXT"

Sección 2: Fusionar con avance rápido

Regresemos a la rama maestra y fusionemos la rama de características en ella:

$ git checkout master
$ git merge características

Producción:

Actualizando 08076fb… 9ee88eb
Avance rápido
B.txt | 0
C.txt | 0
D.txt | 0
3 archivos modificados, 0 inserciones (+), 0 eliminaciones (-)
modo de creación 100644 b.TXT
modo de creación 100644 c.TXT
modo de creación 100644 d.TXT

Si revisa el historial, verá:

$ git log --en línea
9ee88eb C3: Agregar d.TXT
c72b92c C2: Agregar c.TXT
2e4039e C1: Suma de b.TXT
08076fb C0: Agregar un.TXT

Entonces, todas las confirmaciones de la rama de características están ahora en la rama maestra. Si continúa realizando cambios en el maestro, no hay forma de saber cuándo se fusionó la rama de características en él.

Sección 3: Sin avance rápido

Repita la Sección 1 para una nueva carpeta.

Luego, intente una combinación sin adelantar:

$ git checkout master
$ git merge --no-ff función

Abrirá lo siguiente en el editor de texto predeterminado de tu git:

Fusionar las 'características' de la rama
# Ingrese un mensaje de confirmación para explicar por qué es necesaria esta fusión,
# especialmente si fusiona un upstream actualizado en una rama de tema.
#
# Las líneas que comienzan con '#' serán ignoradas y un mensaje vacío abortará
# el compromiso.

Modificar los comentarios. En este caso, puede agregar "C4:" antes de "Fusionar 'características' de la rama". La salida debería verse así:

Fusión realizada por la estrategia 'recursiva'.
B.txt | 0
C.txt | 0
D.txt | 0
3 archivos modificados, 0 inserciones (+), 0 eliminaciones (-)
modo de creación 100644 b.TXT
modo de creación 100644 c.TXT
modo de creación 100644 d.TXT

Ahora, si revisa el historial, debería tener el siguiente aspecto:

$ git log --en línea
e071527 C4: Fusionar 'características' de la rama
bb79c25 C3: Añadiendo d.TXT
692bd8c C2: Agregar c.TXT
a0df62a C1: Sumando b.TXT
7575971 C0: Adición de un.TXT

Puede ver que, aunque tiene exactamente los mismos cambios, esta versión de fusión tiene el compromiso C4 adicional que significa la fusión de la rama de características en la rama maestra.

Conclusión

La bandera git merge no-ff ayuda a crear un historial más legible. Le permite colocar etiquetas que muestren claramente dónde ocurrieron las fusiones. Puede ahorrarle tiempo y esfuerzo durante la depuración.

Estudio adicional:

Referencias:
Cómo cambiar el tamaño, el color y el esquema del puntero del mouse y del cursor en Windows 10
El puntero y el cursor del mouse en Windows 10 son aspectos muy importantes del sistema operativo. Esto también se puede decir de otros sistemas opera...
Motores de juegos gratuitos y de código abierto para desarrollar juegos de Linux
Este artículo cubrirá una lista de motores de juegos de código abierto y gratuitos que se pueden usar para desarrollar juegos 2D y 3D en Linux. Existe...
Tutorial de Shadow of the Tomb Raider para Linux
Shadow of the Tomb Raider es la duodécima incorporación a la serie Tomb Raider, una franquicia de juegos de acción y aventuras creada por Eidos Montre...