Lösen von Merge-Konflikten
Swipe um das Menü anzuzeigen
Beheben von Konflikten
Im vorherigen Kapitel ist ein Merge-Konflikt aufgetreten, daher ist es jetzt an der Zeit, diesen zu beheben.
Öffne zunächst die Datei branch_learning.txt im Vim-Editor mit folgendem Befehl:
vim branch_learning.txt
Falls Vim nicht installiert ist, kann auch ein anderer Texteditor wie nano oder atom verwendet werden, indem vim im obigen Befehl durch den Namen des Editors ersetzt wird.
Es wird jedoch empfohlen, Vim zu verwenden, um die Schritte hier leichter nachvollziehen zu können.
Hier ist die Datei im Vim-Editor geöffnet:
Nun sind die Konfliktmarkierungen sichtbar, die die konfliktbehafteten Abschnitte kennzeichnen.
Diese Markierungen verwenden Pfeile und Sondersymbole, um Unterschiede zwischen den Branches hervorzuheben:
<<<<<<< HEAD: kennzeichnet den Beginn der Änderungen aus dem aktuellen Branch (master);=======: trennt die Änderungen des aktuellen Branches (HEAD) von denen des zu merge-enden Branches;>>>>>>> feature/new-feature: kennzeichnet das Ende der Änderungen aus dem zu merge-enden Branch.
Zur Behebung des Konflikts eine der folgenden Optionen wählen:
- Änderungen aus dem aktuellen Branch (
master) übernehmen; - Änderungen aus dem gemergten Branch (
feature/new-feature) übernehmen; - Manuelle Bearbeitung des Inhalts.
Die Datei manuell bearbeiten, indem die Änderungen beider Branches wie folgt kombiniert werden:
1. In den Bearbeitungsmodus wechseln
Zuerst in den Einfügemodus von Vim wechseln, indem i gedrückt wird.
Dadurch kann der Text bearbeitet werden.
2. Den konfliktbehafteten Abschnitt bearbeiten
Anschließend die Zeilen beider Branches nacheinander kombinieren. Der resultierende Inhalt der Datei sollte wie folgt aussehen:
New branch
New line from the master branch
New line from the feature branch
3. Bearbeitungsmodus verlassen, speichern und beenden
Die Escape-Taste drücken, um den Einfügemodus zu verlassen.
Dann :wq eingeben und Enter drücken, um die Änderungen zu speichern und Vim zu beenden:
Datei committen
Da die Konflikte gelöst wurden, die Datei branch_learning.txt zum Staging-Bereich hinzufügen und den Status überprüfen:
git add branch_learning.txt
git status
Die Datei wurde geändert und erfolgreich zum Staging-Bereich hinzugefügt. Nun mit commit fortfahren:
git commit
Wieder wird der Standard-Texteditor geöffnet (Vim in meinem Fall) mit der Standard-Commit-Nachricht zum Merge:
In Vim den Insert-Modus durch Drücken von i aktivieren und die Nachricht anpassen, indem die Zeile
Kept lines from both branches
hinzugefügt wird, um zu beschreiben, wie die Konflikte gelöst wurden.
Hier die vollständige Commit-Nachricht:
Merge branch 'feature/new-feature'
Kept lines from both branches
Um den Einfügemodus zu verlassen, die Änderungen zu speichern und Vim zu schließen, die Escape-Taste drücken, dann :wq eingeben und Enter drücken.
Der Commit war erfolgreich und der Merge-Konflikt ist nun gelöst.
Werfen wir nun einen Blick auf unseren Commit-Verlauf als Graph (--graph-Flag) mit einer Zeile pro Commit (--oneline-Flag):
git log --graph --oneline
Hier siehst du den neuesten Merge-Commit zusammen mit der charakteristischen Struktur eines Three-Way-Merge.
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