Lösen Von Merge-Konflikten
Konflikte beheben
Im vorherigen Kapitel ist ein Merge-Konflikt aufgetreten, daher wird dieser nun behoben.
Öffne zunächst die Datei branch_learning.txt
im Vim-Editor mit folgendem Befehl:

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 einfacher nachvollziehen zu können.
So sieht die Datei im Vim-Editor geöffnet aus:

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 mergeenden Branches;>>>>>>> feature/new-feature
; kennzeichnet das Ende der Änderungen aus dem zu mergeenden Branch.
Zur Konfliktlösung eine der folgenden Optionen wählen:
- Änderungen aus dem aktuellen Branch (
master
) beibehalten; - Änderungen aus dem gemergten Branch (
feature/new-feature
) beibehalten; - Manuelle Bearbeitung des Inhalts.
Die Datei manuell bearbeiten, indem die Änderungen beider Branches wie folgt kombiniert werden:
1. In den Bearbeitungsmodus wechseln
Zunächst in den Insert-Modus in Vim wechseln, indem i
gedrückt wird.
Dies ermöglicht die Bearbeitung des Textes.
2. Bearbeiten des Konfliktbereichs
Anschließend die Zeilen beider Branches nacheinander zusammenführen. Der resultierende Inhalt der Datei sollte wie folgt aussehen:

3. Bearbeitungsmodus verlassen, speichern und beenden
Die Escape-Taste drücken, um den Einfügemodus zu verlassen.
Anschließend :wq
eingeben und mit Enter bestätigen, um die Änderungen zu speichern und Vim zu beenden:

Datei committen
Nachdem die Konflikte gelöst wurden, die Datei branch_learning.txt
zum Staging-Bereich hinzufügen und den Status überprüfen:

Die Datei wurde geändert und erfolgreich zum Staging-Bereich hinzugefügt. Nun mit commit fortfahren:

Erneut wird der Standard-Texteditor geöffnet (Vim in diesem Fall) mit der Standard-Commit-Nachricht zum Merge:

In Vim den Einfügemodus durch Drücken von i
aktivieren, dann die Nachricht bearbeiten, 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:
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.
Nun folgt eine Betrachtung des Commit-Verlaufs als Graph (--graph
-Flag) mit einer Zeile pro Commit (--oneline
-Flag):

Hier ist der letzte Merge-Commit zusammen mit der charakteristischen Struktur eines Three-Way-Merge zu sehen.
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
Can you explain what a three-way merge is?
How do I interpret the output of `git log --graph --oneline`?
What should I do if I see unexpected results in the commit graph?
Awesome!
Completion rate improved to 3.57
Lösen Von Merge-Konflikten
Swipe um das Menü anzuzeigen
Konflikte beheben
Im vorherigen Kapitel ist ein Merge-Konflikt aufgetreten, daher wird dieser nun behoben.
Öffne zunächst die Datei branch_learning.txt
im Vim-Editor mit folgendem Befehl:

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 einfacher nachvollziehen zu können.
So sieht die Datei im Vim-Editor geöffnet aus:

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 mergeenden Branches;>>>>>>> feature/new-feature
; kennzeichnet das Ende der Änderungen aus dem zu mergeenden Branch.
Zur Konfliktlösung eine der folgenden Optionen wählen:
- Änderungen aus dem aktuellen Branch (
master
) beibehalten; - Änderungen aus dem gemergten Branch (
feature/new-feature
) beibehalten; - Manuelle Bearbeitung des Inhalts.
Die Datei manuell bearbeiten, indem die Änderungen beider Branches wie folgt kombiniert werden:
1. In den Bearbeitungsmodus wechseln
Zunächst in den Insert-Modus in Vim wechseln, indem i
gedrückt wird.
Dies ermöglicht die Bearbeitung des Textes.
2. Bearbeiten des Konfliktbereichs
Anschließend die Zeilen beider Branches nacheinander zusammenführen. Der resultierende Inhalt der Datei sollte wie folgt aussehen:

3. Bearbeitungsmodus verlassen, speichern und beenden
Die Escape-Taste drücken, um den Einfügemodus zu verlassen.
Anschließend :wq
eingeben und mit Enter bestätigen, um die Änderungen zu speichern und Vim zu beenden:

Datei committen
Nachdem die Konflikte gelöst wurden, die Datei branch_learning.txt
zum Staging-Bereich hinzufügen und den Status überprüfen:

Die Datei wurde geändert und erfolgreich zum Staging-Bereich hinzugefügt. Nun mit commit fortfahren:

Erneut wird der Standard-Texteditor geöffnet (Vim in diesem Fall) mit der Standard-Commit-Nachricht zum Merge:

In Vim den Einfügemodus durch Drücken von i
aktivieren, dann die Nachricht bearbeiten, 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:
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.
Nun folgt eine Betrachtung des Commit-Verlaufs als Graph (--graph
-Flag) mit einer Zeile pro Commit (--oneline
-Flag):

Hier ist der letzte Merge-Commit zusammen mit der charakteristischen Struktur eines Three-Way-Merge zu sehen.
Danke für Ihr Feedback!