Conceptos clave

Fusión

En Git, la fusión es el proceso de combinar cambios de una rama en otra. Normalmente se hace cuando una funcionalidad o una corrección de errores se ha completado en una rama separada y debe integrarse en la rama main del proyecto. La fusión permite reunir los cambios hechos en distintas ramas y crear una versión unificada del proyecto que incorpora todas las actualizaciones.

La fusión es una operación esencial en Git porque permite el desarrollo colaborativo y el trabajo en paralelo en distintas funcionalidades o correcciones de errores. Al trabajar en ramas separadas, los desarrolladores pueden avanzar de forma independiente sin interferir en el trabajo de los demás. Cuando el trabajo en una rama está completo y probado, puede fusionarse de vuelta en la rama main, dejando los cambios disponibles para todo el mundo.

Al realizar una fusión, Git intenta combinar automáticamente los cambios de la rama de origen en la rama de destino. Si los cambios no entran en conflicto entre sí (es decir, modifican partes distintas del código), Git hará una fusión fast-forward, simplemente moviendo el puntero de la rama de destino al último commit de la rama de origen.

Sin embargo, si hay cambios incompatibles (es decir, ambas ramas han modificado las mismas líneas de código), Git se detendrá con un conflicto de fusión y pedirá que se resuelva antes de completar la fusión. Esto implica revisar los cambios en conflicto, decidir qué cambios conservar y modificar el código en consecuencia.

Ejemplos

Supón que estás trabajando en una aplicación web y necesitas implementar una funcionalidad nueva de registro de usuarios. Creas una rama nueva llamada login-form-feature para trabajar en ella:

Ejecuta en la terminal:
git switch -c login-form-feature

Después de completar la funcionalidad y probarla a fondo, quieres fusionar los cambios de vuelta en la rama main:

Ejecuta en la terminal:
git switch main
git merge login-form-feature

Git intentará fusionar los cambios de la rama login-form-feature en la rama main. Si no hay conflictos, la fusión se completará automáticamente.