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

Sinopsis

git rebase [-i] [--onto <newbase>] [<upstream> [<branch>]]

Descripción

El comando git rebase mueve una secuencia de commits a una nueva base. Reescribe el historial reproduciendo cada commit sobre la nueva base, produciendo una cadena lineal en lugar de un merge commit. Rebasear es invaluable para mantener branches feature actualizados, limpiar el historial local antes de pushear y squashear commits fixup.

Como rebase crea nuevos commits con SHAs diferentes, nunca rebasees commits que han sido publicados y descargados por otros: terminarán con historiales divergentes. El modo interactivo (-i) te permite reordenar, editar, squashear, descartar o arreglar commits.

En el uso diario, git rebase se integra con alias de shell. Para depurar, ejecuta con GIT_TRACE=1.

Entender cómo git rebase interactúa con el modelo de datos de Git rinde dividendos. La mayoría de problemas con Git provienen de comportamiento predeterminado sorprendente o de reescribir historial que ya se compartió.

Opciones comunes

OpciónDescripción
-i, --interactiveAbre un editor para manipular la lista de commits.
--onto <newbase>Rebasea sobre un commit arbitrario, no sobre el upstream.
--continueReanuda tras resolver conflictos.
--abortCancela el rebase y vuelve al estado original.
--skipSalta el patch actual y continúa.
--autosquashOrdena automáticamente commits fixup/squash.
--autostashStashea cambios locales antes de rebasear y los reaplica después.
-r, --rebase-mergesPreserva merge commits durante rebase.

Ejemplos

git rebase main
# Reproduce los commits del branch actual encima de main

git rebase -i HEAD~5
# Edita interactivamente los últimos 5 commits

git rebase --onto main feature-base feature-tip
# Mueve solo los commits entre feature-base y feature-tip a main

git rebase --continue
# Reanuda tras arreglar conflictos

Errores comunes

Rebasear branches públicos compartidos rompe el historial de cada colaborador. Reserva rebase para limpieza local. Durante la resolución de conflictos, los principiantes a menudo ejecutan git commit en lugar de git rebase --continue, dejando el rebase en un estado roto. Si te pierdes a mitad de un rebase, git rebase --abort siempre te devuelve a un estado seguro.

Comandos relacionados

git merge, git cherry-pick, git reflog, git pull --rebase