Aplicando la estrategia de fusión (merge) no-fast-forward
Ahora que comprende los conceptos básicos de la fusión (merge) no-fast-forward, exploremos cómo aplicar esta estrategia en su flujo de trabajo de Git.
Habilitar la fusión (merge) no-fast-forward por defecto
Para hacer que la fusión (merge) no-fast-forward sea el comportamiento predeterminado de su repositorio de Git, puede establecer la opción de configuración merge.ff en false:
git config merge.ff false
Esto garantizará que todas las futuras fusiones realizadas en el repositorio utilizarán la estrategia no-fast-forward, creando una nueva confirmación de fusión (merge commit) incluso cuando la rama de destino no se haya desviado de la rama de origen.
Realizar una fusión (merge) no-fast-forward
Para realizar una fusión (merge) no-fast-forward manualmente, puede utilizar la opción --no-ff (o -n) con el comando git merge:
git checkout main
git merge --no-ff feature-branch
Esto creará una nueva confirmación de fusión (merge commit) que combinará los cambios de la feature-branch en la rama main, preservando el historial de confirmaciones lineal.
Visualizar la fusión (merge) no-fast-forward
El impacto de la fusión (merge) no-fast-forward en el historial de confirmaciones se puede ver claramente en un gráfico de confirmaciones (commit graph) de Git. Aquí hay un ejemplo:
gitGraph
commit
branch feature-branch
commit
commit
checkout main
commit
merge feature-branch --no-ff
commit
commit
En este ejemplo, la fusión (merge) no-fast-forward crea una nueva confirmación de fusión (merge commit), que es distinta de las confirmaciones normales en la rama main. Esto ayuda a mantener un historial de confirmaciones claro y lineal, lo que facilita entender la línea de tiempo de desarrollo del proyecto.
Al aplicar la estrategia de fusión (merge) no-fast-forward, puede mejorar la mantenibilidad y claridad de su repositorio de Git, especialmente en entornos de desarrollo colaborativo. Este enfoque puede ser especialmente útil cuando se trabaja con ramas de características (feature branches), se fusionan ramas de larga duración o cuando se desea garantizar un historial de confirmaciones claro y lineal para su proyecto.