Git Rebase vs Merge
Última actualización
Tanto git merge como git rebase combinan el trabajo de una rama en otra. git merge une los dos historiales con un commit de fusión, conservando exactamente lo que ocurrió. git rebase reaplica tus commits uno a uno sobre la otra rama, produciendo un historial limpio y lineal, pero reescribiendo tus commits en el proceso.
La regla de oro: nunca hagas rebase de commits que otros ya han descargado. Prueba ambos en el terminal playground: una shell real en tu navegador.
Lado a lado
| Behavior | git merge | git rebase |
|---|---|---|
| Forma del historial | Ramificado, con un commit de fusión | Lineal |
| Reescribe los commits | No | Sí |
| Seguro en ramas compartidas | Sí | No |
| Conserva el historial exacto | Sí | No |
| Fácil de rastrear cuándo se fusionaron las cosas | Sí | Más difícil |
Sintaxis
| Command | What it does |
|---|---|
git merge feature | Fusiona feature en la rama actual |
git merge --no-ff feature | Siempre crea un commit de fusión |
git rebase main | Reaplica los commits de la rama actual sobre main |
git rebase -i HEAD~3 | Edita de forma interactiva los últimos 3 commits |
git rebase --abort | Cancela un rebase en curso |
Preguntas frecuentes sobre git rebase vs merge
¿Cuál es la diferencia entre git rebase y git merge?
git merge combina dos ramas creando un nuevo commit de fusión que une sus historiales, manteniendo el registro exacto de lo que ocurrió. git rebase, en cambio, mueve tus commits para que se reapliquen sobre otra rama, produciendo un historial en línea recta pero reescribiendo esos commits con nuevos hashes. Merge conserva el historial; rebase lo reescribe para dejarlo limpio.¿Cuándo debo usar merge y cuándo debo usar rebase?
Usa merge para integrar una rama terminada (especialmente una compartida): es seguro y no destructivo. Usa rebase para ordenar tus propios commits locales antes de compartirlos, o para actualizar una rama de funcionalidad sobre el último
main y obtener un historial limpio. Muchos equipos hacen rebase en local y luego merge en main.¿Cuál es la regla de oro del rebase?
Nunca hagas rebase de commits sobre los que otros ya han basado su trabajo, normalmente cualquier cosa que hayas subido a una rama compartida. Como el rebase reescribe los commits, hacerlo obliga a todos los demás a reconciliar un historial divergente. Haz rebase libremente en commits locales sin subir; usa merge (o revert) para cualquier cosa que ya sea pública.
¿Rebase o merge causa menos conflictos?
Ninguno evita los conflictos, pero los presentan de forma diferente. Un merge resuelve todos los conflictos de una vez, en el commit de fusión. Un rebase puede pedirte que resuelvas los conflictos commit a commit a medida que se reaplica cada uno. El trabajo total es similar; el rebase simplemente lo reparte.
¿Puedo practicar esto en línea?
Sí. Abre el terminal playground para ejecutar
git merge y git rebase en una shell real en tu navegador, sin instalar nada. El curso interactivo y gratuito de Git de Coddy también cubre la fusión y el rebase paso a paso.