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 ist es nun an der Zeit, diesen zu beheben. Ö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 leichter nachvollziehen zu können.

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

Datei mit Konflikten in Vim geöffnet

Nun sind die Konfliktmarkierungen sichtbar, die die widersprüchlichen 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 Behebung des Konflikts 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 mit den folgenden Schritten kombiniert werden:

1. In den Bearbeitungsmodus wechseln

Zunächst in den Einfügemodus von Vim wechseln, indem i gedrückt wird. Dadurch wird das Bearbeiten des Textes ermöglicht.

2. Den Konfliktbereich bearbeiten

Anschließend die Zeilen beider Branches nacheinander zusammenführen. Der resultierende Inhalt der Datei sollte wie folgt aussehen:

Konfliktlösung

3. Bearbeitungsmodus verlassen, speichern und beenden

Die Escape-Taste drücken, um den Einfügemodus zu verlassen. Anschließend :wq eingeben und Enter drücken, 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 fortfahren mit dem Commit:

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 Insert-Modus durch Drücken von i aktivieren, anschließend 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:

Um den Insert-Modus 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.

question mark

Was ist die empfohlene Methode, um einen Merge-Konflikt in Git zu lösen?

Select the correct answer

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

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 ist es nun an der Zeit, diesen zu beheben. Ö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 leichter nachvollziehen zu können.

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

Datei mit Konflikten in Vim geöffnet

Nun sind die Konfliktmarkierungen sichtbar, die die widersprüchlichen 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 Behebung des Konflikts 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 mit den folgenden Schritten kombiniert werden:

1. In den Bearbeitungsmodus wechseln

Zunächst in den Einfügemodus von Vim wechseln, indem i gedrückt wird. Dadurch wird das Bearbeiten des Textes ermöglicht.

2. Den Konfliktbereich bearbeiten

Anschließend die Zeilen beider Branches nacheinander zusammenführen. Der resultierende Inhalt der Datei sollte wie folgt aussehen:

Konfliktlösung

3. Bearbeitungsmodus verlassen, speichern und beenden

Die Escape-Taste drücken, um den Einfügemodus zu verlassen. Anschließend :wq eingeben und Enter drücken, 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 fortfahren mit dem Commit:

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 Insert-Modus durch Drücken von i aktivieren, anschließend 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:

Um den Insert-Modus 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.

question mark

Was ist die empfohlene Methode, um einen Merge-Konflikt in Git zu lösen?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 6
some-alt