Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Lösen von Merge-Konflikten | Arbeiten mit Branches in Git
Git-Grundlagen
course content

Kursinhalt

Git-Grundlagen

Git-Grundlagen

1. Einführung in Git
2. Fortgeschrittenere Interaktion
3. Änderungen Rückgängig Machen
4. Arbeiten mit Branches in Git

book
Lösen von Merge-Konflikten

Konflikte beheben

Im vorherigen Kapitel sind wir auf einen Merge-Konflikt gestoßen, also ist es jetzt an der Zeit, ihn zu beheben. Öffnen wir zuerst unsere Datei branch_learning.txt mit dem Vim-Editor mit dem folgenden Befehl:

Falls Sie Vim nicht installiert haben, können Sie andere Texteditoren wie nano oder atom verwenden (ersetzen Sie vim im obigen Befehl durch den Namen Ihres Texteditors). Wir empfehlen jedoch dringend die Verwendung von Vim, da es Ihnen viel einfacher fallen wird, den Anweisungen zu folgen.

Hier ist unsere Datei im Vim-Editor geöffnet:

Nun können wir Markierungen sehen, die die konfliktträchtigen Abschnitte anzeigen. Diese Markierungen werden durch Pfeile und Sondersymbole dargestellt, um die konfliktträchtigen Änderungen aus verschiedenen Branches hervorzuheben. Die Konfliktmarkierungen sind die folgenden:

  • <<<<<<< HEAD: Zeigt den Beginn der Änderungen vom aktuellen Branch an (master in unserem Fall);
  • =======: Trennt die Änderungen vom aktuellen Branch (HEAD) und die Änderungen vom Branch, der zusammengeführt wird;
  • >>>>>>> feature/new-feature: Markiert das Ende der Änderungen vom Branch, der zusammengeführt wird.

Um die Konflikte zu beheben, können wir entweder die Änderung vom aktuellen Branch (master) auswählen, die Änderung vom Branch, der zusammengeführt wird (feature/new-feature), oder die Änderungen manuell bearbeiten.

Lassen Sie uns die Änderungen manuell bearbeiten, indem wir die Änderungen aus beiden Branches kombinieren, indem wir die folgenden Schritte befolgen:

1. Bearbeitungsmodus betreten

Zuerst müssen wir den Einfüge- (Bearbeitungs-) Modus in Vim betreten, indem wir i drücken. Dies ermöglicht es Ihnen, den Text zu bearbeiten.

2. Den konfliktträchtigen Abschnitt bearbeiten

Als nächstes werden wir die Zeilen aus beiden Branches kombinieren, sodass der resultierende Inhalt der Datei wie folgt aussieht:

3. Bearbeitungsmodus verlassen, speichern und beenden:

Um den Einfügemodus zu verlassen, sollten wir die Escape-Taste drücken. Danach, um die Änderungen zu speichern und zu beenden, tippen wir :wq und drücken die Enter-Taste:

Datei committen

Da wir die Konflikte gelöst haben, fügen wir nun die branch_learning.txt zum Staging-Bereich hinzu und überprüfen den Status:

Die Datei wurde geändert und tatsächlich zum Staging-Bereich hinzugefügt. Wir können nun mit dem Committen fortfahren:

Erneut wird der Standard-Texteditor geöffnet (Vim in meinem Fall) mit der Standard-Commit-Nachricht bezüglich des Merges:

Lassen Sie uns den Einfügemodus in Vim durch Drücken von i betreten und diese Nachricht ändern, indem wir die folgende Zeile hinzufügen: Kept lines from both branches, um anzugeben, wie wir die Konflikte gelöst haben. Hier ist die vollständige Commit-Nachricht:

Um den Einfügemodus zu verlassen, die Änderungen zu speichern und Vim zu beenden, sollten wir die Escape-Taste drücken und dann :wq eingeben und die Enter-Taste drücken.

Der Commit war erfolgreich und der Merge-Konflikt ist nun gelöst.

Schauen wir uns nun unseren Commit-Verlauf als Graph (--graph Flag) mit einer Zeile pro Commit (--oneline Flag) an:

Hier sehen wir unseren neuesten Merge-Commit und die charakteristische Form eines Drei-Wege-Merges.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 6
We're sorry to hear that something went wrong. What happened?
some-alt