Einfaches Rebase von Commits in Git
Das Git-System bietet zwei Möglichkeiten, Änderungen bei der Arbeit mit Branches vorzunehmen: Merge und Rebase.
Der Vorteil eines Rebases ist, dass der Commit-Verlauf beider Branches, im Gegensatz zu einem Merge, linearer und einfacher für das Verständnis der Teammitglieder, die an einem Projekt arbeiten, aussieht.
In Git erfolgt ein Merge, ausgeführt mit dem
Befehl merge, als
ein dreiseitiges Zusammenführen der letzten Änderungen
der beiden zu mergenden Branches und der neuesten Momentaufnahme
des übergeordneten Branches, der für diese zu mergenden Branches gemeinsam ist.
Dabei werden nur die endgültigen Momentaufnahmen
der Branch-Commits gemergt, nicht deren gesamter
vorheriger Verlauf.
Rebase bedeutet, die Änderungen
aus einem Branch (dem aktuellen) auf einen anderen Branch (der mit dem aktuellen gemergt wird)
anzuwenden. Lassen Sie uns einen Branch test erstellen, in dem
wir eine neue Datei file.txt anlegen,
sie stagen und einen Commit durchführen:
git branch test
git switch test
git add file.txt
git commit -m "commit from branch test"
Wechseln wir nun zum Branch test
und rebasen ihn relativ zum Hauptbranch
master:
git checkout test
git rebase master
Der Rebase-Prozess selbst läuft folgendermaßen ab:
Zuerst erstellt Git eine Momentaufnahme des übergeordneten Branches
master, die in einer temporären Datei gespeichert wird. Dann
fügt der aktuelle Branch test seine Änderungen
nach dem letzten Commit des Branches master ein.
Nun wird der Commit-Verlauf des Hauptbranches so
aussehen:
Nach dem Rebase wird der Commit-Verlauf
des Branches test ebenfalls ähnlich
wie der des Branches master aussehen.
Danach kann man zum Branch master wechseln
und einen Fast-Forward-Merge durchführen,
d.h. master wird wieder der Hauptbranch und beinhaltet
alle Änderungen aus dem Branch test:
git merge test
Erstellen Sie zwei Branches test1 und test2,
in denen jeweils drei Commits für
verschiedene Dateien vorhanden sind, und führen Sie dann deren
Zusammenführung durch einfaches Rebase durch.