Git Merge
Última actualización
git merge incorpora los commits de otra rama a la actual. Cuando la rama actual no ha divergido, Git hace un fast-forward: solo mueve el puntero hacia adelante. Cuando ambas ramas tienen commits nuevos, Git crea un merge commit que une las dos historias. A diferencia de rebase, merge conserva la historia exacta de ambas ramas.
Prueba esto en el terminal playground: una shell real en tu navegador, sin nada que instalar.
Sintaxis
| Command | What it does |
|---|---|
git merge feature | Fusiona feature en la rama actual |
git merge --no-ff feature | Crea siempre un merge commit |
git merge --ff-only feature | Fusiona solo si puede hacer fast-forward |
git merge --squash feature | Combina los commits de la rama en uno solo |
git merge --abort | Cancela una fusión con conflictos |
Fast-forward frente a merge commit
| Scenario | Fast-forward | Merge commit (--no-ff) |
|---|---|---|
| Crea un commit nuevo | No | Sí |
| Conserva un registro de la rama | No | Sí |
| Ocurre cuando | La rama actual no ha divergido | Ambas ramas tienen commits nuevos |
Resolver un conflicto de fusión
Cuando ambas ramas cambiaron las mismas líneas, Git se detiene.
| Step | Command | Result |
|---|---|---|
| 1 | Edita los archivos en conflicto | Elige las líneas correctas, elimina los marcadores |
| 2 | git add <file> | Marca el conflicto como resuelto |
| 3 | git commit | Completa la fusión |
Preguntas frecuentes sobre git merge
¿Cómo fusiono una rama en otra en Git?
Cambia a la rama en la que quieres fusionar (por ejemplo,
git switch main) y luego ejecuta git merge feature. Git combina los commits de feature en main, ya sea mediante un fast-forward o creando un merge commit si ambas ramas han divergido.¿Cuál es la diferencia entre un fast-forward y un merge commit?
Un fast-forward ocurre cuando tu rama actual no se ha movido desde que la otra rama se separó: Git simplemente desliza el puntero hacia adelante, sin un commit nuevo. Un merge commit se crea cuando ambas ramas tienen commits nuevos, uniendo sus historias. Usa
--no-ff para crear siempre un merge commit, o --ff-only para exigir un fast-forward.¿Cómo resuelvo un conflicto de fusión?
Cuando una fusión entra en conflicto, Git marca las secciones enfrentadas en los archivos afectados con los marcadores
<<<<<<<, ======= y >>>>>>>. Edita cada archivo para conservar el contenido correcto y eliminar los marcadores, luego haz git add de los archivos resueltos y git commit para finalizar la fusión.¿Cómo deshago o aborto una fusión?
Si la fusión aún está en curso (con conflictos sin resolver), ejecuta
git merge --abort para cancelarla y restaurar el estado previo a la fusión. Si la fusión ya se completó localmente, git reset --hard ORIG_HEAD devuelve la rama a su posición previa a la fusión (a diferencia de HEAD~1, también es correcto tras un fast-forward, pero descarta el trabajo sin confirmar). Si la fusión ya está subida, usa git revert -m 1 <merge-hash>.¿Puedo practicar esto en línea?
Sí. Abre el terminal playground para ejecutar
git merge en una shell real en tu navegador, sin nada que instalar. El curso interactivo y gratuito de Git de Coddy también cubre la fusión y la resolución de conflictos paso a paso.