Git Rebase vs Merge
Zuletzt aktualisiert
Sowohl git merge als auch git rebase führen die Arbeit eines Branches in einen anderen zusammen. git merge verbindet die beiden Historien mit einem Merge-Commit und bewahrt genau, was passiert ist. git rebase spielt deine Commits einen nach dem anderen oben auf den anderen Branch neu ab und erzeugt eine saubere, lineare Historie - schreibt dabei aber deine Commits um.
Die goldene Regel: Rebase niemals Commits, die andere bereits gepullt haben. Probiere beides im Terminal-Playground aus - eine echte Shell in deinem Browser.
Nebeneinander
| Behavior | git merge | git rebase |
|---|---|---|
| Form der Historie | Verzweigt, mit einem Merge-Commit | Linear |
| Schreibt Commits um | Nein | Ja |
| Sicher auf geteilten Branches | Ja | Nein |
| Bewahrt die exakte Historie | Ja | Nein |
| Leicht nachzuvollziehen, wann etwas gemergt wurde | Ja | Schwieriger |
Syntax
| Command | What it does |
|---|---|
git merge feature | Merge feature in den aktuellen Branch |
git merge --no-ff feature | Erstellt immer einen Merge-Commit |
git rebase main | Spielt die Commits des aktuellen Branches auf main neu ab |
git rebase -i HEAD~3 | Bearbeitet die letzten 3 Commits interaktiv |
git rebase --abort | Bricht einen laufenden Rebase ab |
Git rebase vs merge FAQ
Was ist der Unterschied zwischen git rebase und git merge?
git merge kombiniert zwei Branches, indem es einen neuen Merge-Commit erstellt, der ihre Historien verbindet, und bewahrt so den exakten Verlauf dessen, was passiert ist. git rebase hingegen verschiebt deine Commits, sodass sie oben auf einem anderen Branch neu abgespielt werden, und erzeugt eine geradlinige Historie, schreibt diese Commits aber mit neuen Hashes um. Merge bewahrt die Historie; rebase schreibt sie zugunsten der Sauberkeit um.Wann sollte ich merge und wann rebase verwenden?
Verwende merge, um einen fertigen Branch (besonders einen geteilten) zu integrieren - es ist sicher und nicht destruktiv. Verwende rebase, um deine eigenen lokalen Commits aufzuräumen, bevor du sie teilst, oder um einen Feature-Branch auf den neuesten
main zu aktualisieren, für eine saubere Historie. Viele Teams rebasen lokal und mergen dann in main.Was ist die goldene Regel des Rebasens?
Rebase niemals Commits, auf denen andere bereits ihre Arbeit aufgebaut haben - typischerweise alles, was du auf einen geteilten Branch gepusht hast. Da Rebase Commits umschreibt, zwingt es alle anderen, eine auseinandergelaufene Historie in Einklang zu bringen. Rebase frei auf lokalen, ungepushten Commits; verwende merge (oder revert) für alles, was bereits öffentlich ist.
Verursacht Rebase oder Merge weniger Konflikte?
Keines vermeidet Konflikte, aber sie treten unterschiedlich zutage. Ein Merge löst alle Konflikte auf einmal, im Merge-Commit. Ein Rebase kann dich bitten, Konflikte Commit für Commit zu lösen, während jeder neu abgespielt wird. Der Gesamtaufwand ist ähnlich; der Rebase verteilt ihn nur.
Kann ich das online üben?
Ja. Öffne den Terminal-Playground, um
git merge und git rebase in einer echten Shell in deinem Browser auszuführen - nichts zu installieren. Coddys kostenloser interaktiver Git-Kurs behandelt Mergen und Rebasen ebenfalls Schritt für Schritt.