Warum interaktiver Rebase
Der interaktive Rebase schreibt eine Sequenz von Commits in eine sauberere, aussagekraftigere Historie um, bevor sie veroffentlicht wird. Es ist das chirurgische Instrument von Git: Sie konnen Commits umordnen, bearbeiten, mit squash zusammenfassen, fixen, loschen, umbenennen oder aufteilen — alles in einer einzigen gefuhrten Sitzung.
Die Todo-Liste
Das Ausfuhren von git rebase -i offnet einen Editor mit einer Todo-Liste. Jede Zeile hat ein Verb und einen Commit. Zeilen umordnen, um Commits umzuordnen.
git rebase -i HEAD~5
Verben: pick, reword, edit, squash, fixup, drop, exec, break, sowie label/reset/merge fur den Rebase-Merge-Graphen (ab Git 2.18).
Einen Commit aufteilen
git reset HEAD^
git add -p
git commit -m "First logical change"
git add -p
git commit -m "Second logical change"
git rebase --continue
Autosquash-Workflow
git commit --fixup=<sha>
git rebase -i --autosquash HEAD~10
Setzen Sie rebase.autoSquash = true und rebase.autoStash = true in der Konfiguration.
Exec zur Verifikation
git rebase -i --exec "cargo test" main
Rebase merges mit --rebase-merges
git rebase -i --rebase-merges main
Haufige Fehler
Rebase von veroffentlichten Commits zwingt Mitarbeiter zu Historie-Operationen. Reservieren Sie ihn fur Branches, die Sie allein besitzen. git reflog rettet fast immer verlorene Arbeit.
Wiederherstellung
git rebase --abort
git reflog
git reset --hard HEAD@{5}