Fusión de Ramas: git merge (Fast-Forward vs No-Fast-Forward)
Aprende a integrar el trabajo de una rama en otra mediante git merge, la diferencia entre fusiones de avance rápido (Fast-Forward) y fusiones con commit de unión (--no-ff), y cómo mantener limpio el historial.
¿Cómo Funciona git merge?
La fusión (merge) es el proceso de tomar el historial y los cambios de una rama secundaria (por ejemplo, feature/login) e incorporarlos dentro de una rama destino (por ejemplo, main o develop).
# 1. Ponerte en la rama destino:
git switch main
# 2. Traer e incorporar la rama de trabajo:
git merge feature/login
Los Dos Tipos Principales de Fusión
Diagrama 3.1: Bifurcación de una rama secundaria de desarrollo y posterior fusión mediante commit de unión (Merge Commit C6).
| Tipo de Merge | ¿Cuándo ocurre? | ¿Crea un commit nuevo? | Estructura en el historial |
|---|---|---|---|
| Avance Rápido (Fast-Forward) | Cuando la rama destino (main) no ha recibido ningún commit nuevo desde que se creó la rama secundaria. |
No. Git simplemente mueve el puntero de main hacia adelante hasta alcanzar a la otra rama. |
Historial 100% lineal y continuo. |
| No Fast-Forward (--no-ff) / Fusión de 3 Vías | Cuando ambas ramas tienen commits independientes nuevos, o cuando fuerzas explícitamente git merge --no-ff. |
Sí. Se genera un Merge Commit con dos padres para registrar el evento de integración. | Historial en forma de rombo que documenta claramente que una funcionalidad fue integrada en bloque. |
¿Por qué las empresas usan git merge --no-ff?
En equipos profesionales se suele exigir git merge --no-ff para ramas de funcionalidad (features) porque, si en el futuro se descubre que esa característica completa introdujo un fallo, se puede revertir con un solo comando todo el bloque de la funcionalidad en lugar de tener que buscar commit por commit en una lista plana.
⚡ Flujo Completo de Fusión de una Característica
Paso a paso para crear una rama, avanzar en ella y fusionarla en la rama principal de forma limpia:
# 1. Crear y trabajar en una rama de mejora:
git switch -c feature/modo-oscuro
echo "body.dark { background: #121212; }" >> dark.css
git add dark.css
git commit -m "feat(ui): implementar variables para tema oscuro"
# 2. Volver a la rama principal:
git switch main
# 3. Fusionar la característica (Fast-Forward por defecto si no hubo otros cambios):
git merge feature/modo-oscuro
# O fusionar forzando la creación de un commit de unión documental:
# git merge --no-ff feature/modo-oscuro -m "merge: integrar feature/modo-oscuro a main"
# 4. Una vez fusionada con éxito, la rama ya no es necesaria:
git branch -d feature/modo-oscuro
Mini-Quiz de Retención
Comprueba tu comprensión antes de pasar a la siguiente lecciónAntes de ejecutar el comando git merge feature/login, ¿en cuál rama debes encontrarte posicionado con git switch?
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.🚀 ¿Quieres dominar Manual Completo de Git & GitHub Profesional y crear proyectos reales?
Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.
🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.