Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Durchführen eines Rebase-Vorgangs | Fortgeschrittenere Workflows
GitHub-Grundlagen

Durchführen eines Rebase-Vorgangs

Swipe um das Menü anzuzeigen

Änderungen auf den main-Branch rebasen

Bevor wir unsere Änderungen rebasen können, müssen wir zunächst zum main-Branch wechseln und die neuesten Änderungen abrufen:

git checkout main
git pull
Wechseln zum main-Branch und Abrufen von Änderungen

Sehen wir uns nun den Commit-Baum an:

git log --graph --oneline --all
Commit-Baum vor dem Rebase

Sowohl der main- als auch der feature/payment-Branch enthalten inzwischen Commits nach dem letzten gemeinsamen Vorgänger. Dies bedeutet, dass ein Fast-Forward-Merge nicht möglich ist.

Würden wir diese Branches zusammenführen, käme es zu einem Three-Way-Merge. Um jedoch eine lineare Historie beizubehalten, soll der feature/payment-Branch auf den main-Branch gerebased werden. Dies erfolgt, indem zum feature/payment-Branch gewechselt und der Befehl git rebase ausgeführt wird:

git checkout feature/payment
git rebase main
Rebase-Vorgang von Änderungen

Fast-forward-Merge

Da das Rebase erfolgreich war, werfen wir erneut einen Blick auf unseren Commit-Baum:

git log --graph --oneline
Commit-Baum nach dem Rebase

Wie erwartet ist die Commit-Historie jetzt linear mit dem neuesten Commit auf dem Branch feature/payment. Nun kann ein einfacher Fast-forward-Merge auf den Branch main durchgeführt werden:

git checkout main
git merge feature/payment
Branches zusammenführen

Überprüfung, ob beide Branches auf denselben Commit verweisen, durch Ansicht des letzten Commits:

git log -n 1
Letzter Commit

Entfernen des Feature-Branches

Der main-Branch enthält nun den neuesten Commit mit dem implementierten Zahlungssystem, daher können wir sowohl den lokalen als auch den entfernten feature/payment-Branch sicher entfernen. Der folgende Befehl entfernt den entfernten Branch:

git push --delete origin feature/payment

Nun können wir den lokalen Branch entfernen:

git branch -d feature/payment
Branches löschen

Abschließend können alle vorgenommenen Änderungen zurück in das Remote-Repository übertragen werden:

git push
Löschen wird übertragen

Um zu überprüfen, ob der feature-Branch sowohl lokal als auch remote gelöscht wurde, kann folgender Befehl ausgeführt werden, der alle (-a steht für alle) lokalen und entfernten Branches auflistet:

git branch -a
Alle Branches auflisten

Wie Sie sehen können, wurde der Branch feature/payment erfolgreich gelöscht, und es gibt jetzt nur noch zwei Branches: main und john/test mit ihren Remote-Gegenstücken.

Insgesamt eignet sich das Rebasen gut für lokale Änderungen, die noch nicht geteilt wurden, kann jedoch erhebliche Probleme verursachen, wenn Änderungen bereits in ein Remote-Repository veröffentlicht und möglicherweise von anderen Mitwirkenden heruntergeladen wurden. Das Rebasen von Commits, die andere verwenden, kann durch das Umschreiben der Commit-Historie zu Verwirrung und Konflikten führen.

Als allgemeine Regel gilt: Vermeiden Sie das Rebasen von Änderungen, die bereits in Remote-Repositories gepusht wurden, um diese Probleme zu verhindern.

question mark

Warum führt feature/payment nach dem Rebasen von main auf git merge feature/payment einen Fast-Forward-Merge durch?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 5

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 5
some-alt