Menu
Coddy logo textTech

Git Rebase

Última actualización

git rebase mueve los commits de tu rama para que se reproduzcan encima de otra rama, generando un historial recto y lineal en lugar de un commit de fusión. El rebase interactivo (-i) va más allá, permitiéndote combinar, reordenar, editar o descartar commits. Como el rebasing reescribe los commits, hazlo solo en trabajo que aún no has compartido.

Prueba esto en el terminal playground: una shell real en tu navegador, sin nada que instalar.

Sintaxis

CommandWhat it does
git rebase mainReproduce tus commits encima de main
git rebase -i HEAD~3Edita interactivamente los últimos 3 commits
git rebase --onto main old newMueve un rango de commits sobre main
git rebase --continueReanuda tras resolver conflictos
git rebase --abortCancela el rebase y restaura la rama
git pull --rebaseHace pull y rebase en lugar de merge

Palabras clave del rebase interactivo

En el editor que abre -i, cambia pick por una de estas.

KeywordWhat it does
pickConserva el commit
rewordConserva el commit y edita su mensaje
squashFusiona con el commit anterior y combina los mensajes
fixupFusiona pero descarta este mensaje
dropElimina el commit por completo

Preguntas frecuentes sobre git rebase

¿Qué hace git rebase?
Toma los commits de tu rama actual y los reproduce uno a uno encima de otra rama, como si hubieras empezado tu trabajo desde el último commit de esa rama. El resultado es un historial lineal sin commit de fusión. Los commits se reescriben (obtienen nuevos hashes) en el proceso.
¿Qué es el rebase interactivo?
git rebase -i <base> abre un editor que lista los commits desde <base>, donde puedes reordenarlos, hacer squash de varios en uno, hacer reword de los mensajes, hacer edit de un commit o drop para descartarlo. Es la herramienta principal para limpiar una serie desordenada de commits antes de compartirlos.
¿Cuál es la regla de oro del rebasing?
Nunca hagas rebase de commits en los que otros ya han basado su trabajo, normalmente todo lo que se ha 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 los públicos.
¿Cómo arreglo o cancelo un rebase con conflictos?
Cuando un rebase se detiene por un conflicto, resuelve los archivos, hazles git add y luego ejecuta git rebase --continue. Usa git rebase --skip para descartar el commit actual, o git rebase --abort para cancelar por completo y devolver la rama a como estaba antes de iniciar el rebase.
¿Puedo practicar esto en línea?
Sí. Abre el terminal playground para ejecutar git rebase en una shell real en tu navegador, sin nada que instalar. El curso interactivo y gratuito de Git de Coddy también cubre el rebasing paso a paso.
Coddy programming languages illustration

Aprende Git con Coddy

COMENZAR