Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Grundlagen des Rebasings | Fortgeschrittenere Workflows
GitHub-Grundlagen

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.

Note
Mehr erfahren

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-Merge

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):

Rebase
Note
Hinweis

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.

question mark

Was ist der Hauptzweck der Verwendung von git rebase anstelle von git merge?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 4

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 3. Kapitel 4
some-alt