Menu
Coddy logo textTech

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

Behaviorgit mergegit rebase
Forma del historialRamificado, con un commit de fusiónLineal
Reescribe los commitsNo
Seguro en ramas compartidasNo
Conserva el historial exactoNo
Fácil de rastrear cuándo se fusionaron las cosasMás difícil

Sintaxis

CommandWhat it does
git merge featureFusiona feature en la rama actual
git merge --no-ff featureSiempre crea un commit de fusión
git rebase mainReaplica los commits de la rama actual sobre main
git rebase -i HEAD~3Edita de forma interactiva los últimos 3 commits
git rebase --abortCancela 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.
Coddy programming languages illustration

Aprende Git con Coddy

COMENZAR