Por Anónimo (no verificado) , 29 Abril 2026

Sinopsis

git rebase -i <upstream>
git rebase -i --root

Descripción

El rebase interactivo (git rebase -i) abre un editor con la lista de commits a rebasear, permitiéndote reordenar, editar, squashear, descartar o renombrar mensajes. Es la herramienta más poderosa para limpiar el historial local antes de pushear.

Las acciones comunes (pick, reword, edit, squash, fixup, drop) están listadas en la cabecera del archivo. Combinado con --autosquash, los commits fixup se ordenan automáticamente.

En el uso diario, este comando se integra estrechamente con alias de shell, plugins de editor e integración continua. Los usuarios avanzados a menudo añaden alias que combinan los flags que siempre pasan. El formato de salida puede personalizarse vía configuración de Git. Cuando algo sale mal, ejecuta el comando con GIT_TRACE=1 para revelar las llamadas plumbing subyacentes.

Entender cómo este comando interactúa con el resto del modelo de datos de Git rinde dividendos. Cada comando opera sobre algún subconjunto de las piezas (objetos, index, refs, árbol de trabajo), y saber cuáles toca ayuda a predecir resultados y a recuperarse de errores.

Opciones comunes

OpciónDescripción
-iInteractive editor for rebase plan.
--autosquashAuto-arrange fixup/squash commits.
--rootRebase from the very first commit.
-x <cmd>Run a command between commits (e.g. tests).
-r, --rebase-mergesPreserve merge commits.
--continueResume after resolving.
--abortCancel completely.

Ejemplos

git rebase -i HEAD~5
# Edit the last 5 commits

git commit --fixup abc123
git rebase -i --autosquash abc123^
# Add a fixup, then auto-squash on rebase

git rebase -i -x "npm test" main
# Run tests after each commit during rebase

git rebase -i --root
# Rewrite history from the first commit

Errores comunes

Saving an empty rebase todo list aborts the operation — leave at least one pick line. Marking too many commits as edit creates a tedious sequence of stops; prefer squash or fixup when you just want to combine. Never interactive-rebase commits that are already pushed and shared.

Comandos relacionados

git rebase, git commit --fixup, git cherry-pick, git reflog