Kursinhalt
Git-Grundlagen
Git-Grundlagen
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.
Danke für Ihr Feedback!