Grundlagen des Rebasings
Swipe um das Menü anzuzeigen
Einen Commit auf dem main-Branch erstellen
Beginnen wir damit, einen Commit direkt im entfernten main-Branch zu erstellen, indem wir die Datei README.md im Remote-Repository bearbeiten. Dadurch entsteht eine auseinanderlaufende Commit-Historie zwischen dem main-Branch und dem feature/payment-Branch.
Hier ist die zur Datei hinzugefügte Zeile:
New feature will soon be integrated.
Hier ist die entsprechende Commit-Nachricht:
Add information about new feature in README.md
Verständnis von Rebasing
Wie bereits im vorherigen Kapitel erwähnt, kann und sollte der feature-Branch nach Überprüfung und Tests wieder in den main-Branch zusammengeführt werden. Bisher haben wir dafür ausschließlich den Befehl git merge verwendet. Eine alternative Methode ist jedoch die Verwendung des Befehls git rebase.
Rebasing ist der Vorgang, eine Abfolge von Commits auf einen neuen Basis-Commit zu verschieben oder zu kombinieren. Dies geschieht, indem die Änderungen eines Branches auf einen anderen Branch übertragen werden, was zu einer linearen Commit-Historie führt.
Wenn wir einen Branch erstellen, verfolgt Git den neuesten Commit auf beiden Branches. Hat nur ein Branch neue Änderungen, kann Git diese per Fast-Forward anwenden. Haben jedoch beide Branches neue Änderungen, erstellt Git einen neuen Merge-Commit, was zu einem Three-Way-Merge führt.
So würde ein Three-Way-Merge in unserem Fall aussehen, wobei C4 der neueste Commit auf dem Branch feature/payment vor dem Mergen war:
Dreifach-Merges können das Debugging jedoch erschweren, da sie zu aufgeteilten, nicht-linearen Verläufen führen. Durch das Rebasen ändern wir die Basis unserer Commits und spielen sie auf die neue Basis auf, sodass Git einen Fast-Forward-Merge durchführen und eine lineare Historie beibehalten kann.
Hier ist eine Animation, die veranschaulicht, wie das Rebasen in unserem Fall durchgeführt werden kann (die Commit-Bezeichner entsprechen hier nicht den echten):
Wenn du einen Branch rebasest, schreibst du im Wesentlichen dessen Historie um. Das bedeutet, dass die alten Commits durch neue ersetzt werden, die andere Bezeichner (Hash-Summen) haben, da sie auf anderen Snapshots des Codes basieren. Wie in der obigen Animation gezeigt, hat sich der Bezeichner des Commits auf dem Branch feature/payment nach dem Rebase geändert.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen