Perche rebase
Rebase riscrive il branch in modo che appaia partire dalla punta di un altro branch, riproducendo i commit uno per uno. Il risultato e una storia lineare che si legge come una storia.
Il rebase base
git checkout feature/login
git fetch origin
git rebase origin/main
git status
git add <file>
git rebase --continue
git rebase --abort
Rebase interattivo
git rebase -i HEAD~5
pick 1a2b3c4 Add login form
pick 5d6e7f8 Fix typo
pick 9a0b1c2 Refactor auth helper
reword- mantieni il commit, modifica il messaggio.edit- pausa per modificare.squash- combina nel precedente, fonde i messaggi.fixup- combina, scarta il messaggio.drop- rimuovi il commit.
La regola d'oro
Mai fare rebase di commit pushati e consumati da altri.
Workflow autosquash
git commit --fixup <sha>
git commit --fixup <sha>
git rebase -i --autosquash main
Rebase versus merge
Entrambi integrano modifiche; la differenza filosofica e se preservare la storia di sviluppo o presentare una narrazione curata.
Rerere per conflitti ripetuti
git config --global rerere.enabled true