Da Anonimo (non verificato) , 29 Aprile 2026

Perche il rebase interattivo

Il rebase interattivo riscrive una sequenza di commit in una storia piu pulita e significativa prima della pubblicazione. E lo strumento chirurgico di Git: si possono riordinare, modificare, accorpare con squash, fixare, eliminare, rinominare o dividere i commit, tutto in una singola sessione guidata.

La lista todo

Eseguire git rebase -i apre un editor con una lista todo. Ogni riga ha un verbo e un commit. Riordinare le righe per riordinare i commit.

git rebase -i HEAD~5

Verbi: pick, reword, edit, squash, fixup, drop, exec, break, e label/reset/merge per il grafo di rebase merge (da Git 2.18).

Dividere un commit

git reset HEAD^
git add -p
git commit -m "First logical change"
git add -p
git commit -m "Second logical change"
git rebase --continue

Workflow autosquash

git commit --fixup=<sha>
git rebase -i --autosquash HEAD~10

Impostare rebase.autoSquash = true e rebase.autoStash = true nella configurazione.

Exec per la verifica

git rebase -i --exec "cargo test" main

Ogni commit tra HEAD e main verra estratto e il comando eseguito.

Rebase merges con --rebase-merges

git rebase -i --rebase-merges main

Errori comuni

Fare rebase di commit pubblicati costringe i collaboratori a interventi sulla storia. Riservarlo ai branch che si possiedono. Dimenticare git rebase --continue dopo i conflitti lascia il rebase a meta. Usare git status. git reflog recupera quasi sempre il lavoro perso.

Recupero

git rebase --abort
git reflog
git reset --hard HEAD@{5}