Git rebase
Kurz: Mit git rebase setzt man die Commits eines Branches auf eine neue Basis. Dadurch entsteht eine lineare Historie ohne zusätzliche Merge-Commits.
Genauer: Statt zwei Branches mit einem Merge-Commit zusammenzuführen, nimmt Rebase deine Commits, legt sie kurz beiseite, aktualisiert die Basis auf den neuesten Stand und spielt die Commits danach nacheinander wieder ab. Die Commits bekommen dabei neue Hashes, weil sich ihr Elternteil ändert.
Im Detail
- Typischer Einsatz:
git rebase mainauf einem Feature-Branch, damit er die neuesten Änderungen vonmainenthält. - Interaktiv:
git rebase -i HEAD~5erlaubt, Commits zusammenzufassen (squash), umzubenennen, umzusortieren oder zu löschen. - Goldene Regel: Nie Commits umschreiben, die schon andere bekommen haben (öffentliche Branches). Sonst weichen die Historien auseinander.
- Konflikte: Sie treten Commit für Commit auf. Nach der Lösung
git rebase --continue, zum Abbrechengit rebase --abort. - Merge oder Rebase: Merge bewahrt die echte Historie, Rebase macht sie lesbar. Viele Teams nutzen Rebase lokal und Merge beim Zusammenführen.
Siehe auch: Merge-Konflikte