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 Essentials

bookLö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:

Vim öffnen

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:

Datei mit Konflikten in Vim 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 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:

Konflikt lösen

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:

Vim beenden

Datei committen

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

Gelöste Datei hinzufügen

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

Datei wird committet

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

Standard-Commit-Nachricht

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.

Speichern der geänderten Nachricht und Beenden von Vim

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):

Commit-Verlaufsgrafik

Hier ist der letzte Merge-Commit zusammen mit der charakteristischen Struktur eines Three-Way-Merge zu sehen.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 6

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Suggested prompts:

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

bookLö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:

Vim öffnen

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:

Datei mit Konflikten in Vim 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 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:

Konflikt lösen

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:

Vim beenden

Datei committen

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

Gelöste Datei hinzufügen

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

Datei wird committet

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

Standard-Commit-Nachricht

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.

Speichern der geänderten Nachricht und Beenden von Vim

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):

Commit-Verlaufsgrafik

Hier ist der letzte Merge-Commit zusammen mit der charakteristischen Struktur eines Three-Way-Merge zu sehen.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 6
some-alt