Da Anonimo (non verificato) , 29 Aprile 2026

Sinossi

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

Descrizione

Il comando git rebase sposta una sequenza di commit a una nuova base. Riscrive la storia rieseguendo ogni commit sopra la nuova base, producendo una catena lineare invece di un merge commit. Il rebasing è prezioso per mantenere aggiornati i feature branch, pulire la storia locale prima di pushare e squashare commit fixup.

Poiché il rebasing crea nuovi commit con SHA diversi, non rebasare mai commit che sono stati pubblicati e tirati da altri — finiranno con storie divergenti. La modalità interattiva (-i) ti permette di riordinare, modificare, squashare, eliminare o correggere i commit.

Nell'uso quotidiano, git rebase si integra con alias, editor e CI.

Capire il modello dati di Git aiuta a prevedere i risultati.

Opzioni comuni

OpzioneDescrizione
-i, --interactiveApre un editor per manipolare la lista dei commit.
--onto <newbase>Rebasa su un commit arbitrario, non l'upstream.
--continueRiprende dopo aver risolto i conflitti.
--abortCancella il rebase e torna allo stato originale.
--skipSalta la patch corrente e continua.
--autosquashOrdina automaticamente i commit fixup/squash.
--autostashFa stash delle modifiche locali prima del rebase e fa pop dopo.
-r, --rebase-mergesPreserva i merge commit durante il rebase.

Esempi

git rebase main
# Riesegue i commit del branch corrente sopra main

git rebase -i HEAD~5
# Modifica interattivamente gli ultimi 5 commit

git rebase --onto main feature-base feature-tip
# Sposta solo i commit tra feature-base e feature-tip su main

git rebase --continue
# Riprende dopo aver corretto i conflitti

Errori comuni

Fare rebase di branch pubblici e condivisi rompe la storia di ogni collaboratore. Riserva il rebase per la pulizia locale. Durante la risoluzione dei conflitti, i principianti spesso eseguono git commit invece di git rebase --continue, lasciando il rebase in uno stato rotto. Se ti perdi a metà rebase, git rebase --abort ti riporta sempre al sicuro.

Comandi correlati

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