Einführung in das Lösen von Zusammenführungskonflikten in GIT

Die Verwaltung von Beiträgen zur Lösung von Konflikten zwischen mehreren verteilten Entwicklern ist eine der Hauptaufgaben der Versionskontrollsysteme. Um Zusammenführungskonflikte zu lösen, müssen wir zunächst verstehen, was es genau ist. Es entsteht beim Zusammenführen verschiedener Versionen desselben Codes und wird vom Versionskontrollsystem verwaltet, meistens, wenn ein Entwickler eine Datei löscht, während ein anderer Entwickler sie noch änderte, oder wenn mehrere Personen versuchen, dieselbe Zeile in einer Datei zu ändern. In diesem Artikel erfahren Sie mehr über Git-Merge-Konflikte, welche Ursachen sie haben und wie sie behoben werden können.

Was ist ein Zusammenführungskonflikt in GIT?

Git hat das Zusammenführen sehr einfach gemacht, da es automatisch neue Änderungen mit dem Befehl git merge integriert. Im Falle von Konflikten ist der Konflikt jedoch nur dem Entwickler bekannt, der zusammengeführt wird, während die anderen den Konflikt nicht kennen. Was Git also tut, ist, dass es den Zusammenführungsprozess anhält und die Datei als konfliktbehaftet kennzeichnet. Der Entwickler findet und löst den Konflikt. Konflikte während der Zusammenführung können auf folgende Weise auftreten:

  • Fehler beim Starten der Zusammenführung

Bei ausstehenden Änderungen im Arbeitsverzeichnis des aktuellen Projekts kann eine Zusammenführung fehlschlagen, da sie beim Zusammenführen von den Commits überschrieben werden könnten. Es kann jedoch mit verschiedenen git-Befehlen wie git checkout / stash / reset / commit stabilisiert werden.

  • Fehler beim Zusammenführen

Wenn beim Zusammenführen ein Fehler auftritt, liegt ein Konflikt zwischen dem Zweig, der zusammengeführt wird, und dem aktuellen Zweig vor. Git versucht zwar, die Dateien ohne Konflikte zusammenzuführen, aber wenn dies nicht möglich ist, können Sie sie manuell auflösen.

Wie erstelle ich einen Konflikt beim Zusammenführen von Dateien?

Nehmen wir ein Beispiel, um den Zusammenführungskonflikt in GIT mithilfe der Git-Befehlszeilenschnittstelle anzuzeigen / zu beheben.

$ mkdir git-merge-test
$ cd git-merge-test
$ git init
$ echo "Mess with this content" > new_merged.txt
$ git add new_merged.txt
$ git commit -am"Committed the earlier content"
(master (root-commit) d58f73b) Committed the earlier content
1 file changed, 1 insertion(+)
create mode 200548 new_merged.txt

Lassen Sie uns Zeile für Zeile sehen, was im obigen Befehlsausschnitt passiert.

  • git-merge-test erstellt ein neues Verzeichnis und initialisiert ein neues Git-Repository.
  • Erstellen Sie als Nächstes eine Textdatei mit dem Namen new_merged.txt, auf der etwas geschrieben ist.
  • Fügen Sie den neu erstellten Text zum Repo hinzu und bestätigen Sie ihn.

Wir haben jetzt ein neues Repository mit einem Hauptzweig und einer Datei new_merged.txt mit etwas Inhalt. Dann erstellen wir einen weiteren Zweig, der mit der Zusammenführung in Konflikt steht.

$ git checkout -b newbranch
$ echo "New content" > new_merged.txt
$ git commit -am"Same named file is edited to cause a conflict"
(newbranch 6282319) Same named file is edited to cause a conflict
1 file changed, 1 insertion(+), 1 deletion(-)

Um es auf Sie herunterzubrechen, die obigen Zeilen:

  • Erstellt eine neue Zweigstelle mit dem Namen newbranch und checkt sie aus.
  • überschreibt den Inhalt der Datei new_merged.txt.
  • und legt schließlich den neu erstellten Inhalt fest.

Mit der newbranch mit dem Namen one branch wird ein Commit erstellt, das den Inhalt in new_merged.txt überschreibt

$ git checkout master
Switched to branch 'master'
$ echo "Append" >> new_merged.txt
$ git commit -am"Content appended new_merged.txt"
(master 24fbe3c) Content appended new_merged.txt
1 file changed, 1 insertion(+)

Die obige Befehlssequenz checkt nicht nur den Master-Zweig aus, sondern fügt Inhalt zu new_merged.txt hinzu und schreibt ihn am Ende fest. Jetzt hat unser Beispiel 2 neue Commits. Einer ist in der Master-Branche und einer in der Newbranch. Jetzt füge die neue Branche zusammen, um zu sehen, was passiert!

$ git merge newbranch
Auto-merging new_merged.txt
CONFLICT (content): Merge conflict in new_merged.txt
Automatic merge failed; fix conflicts and then commit the result.

Git zeigt uns, dass ein Konflikt aufgetreten ist.

Lösen von Zusammenführungskonflikten in GIT

Das Bearbeiten der in Konflikt stehenden Datei ist eine der Möglichkeiten, um einen Zusammenführungskonflikt zu entfernen. Öffnen Sie einfach die Konfliktdatei im Editor und entfernen Sie die Konflikttrenner nacheinander. Nach der Bearbeitung können Sie mit git add den geänderten Inhalt hinzufügen. Ein neues Commit kann erstellt werden, indem Folgendes ausgeführt wird:

git commit -m "merged and resolved the conflict in "

Git stellt die Lösung des Konflikts sicher und erstellt daher eine neue festgeschriebene Zusammenführung, um den Konflikt abzuschließen. Einige der Git-Befehle, mit denen Zusammenführungskonflikte gelöst werden können, sind:

git log --merge

Der mit dem Befehl git log übergebene Merge-Abort erzeugt eine Liste von Commits, bei denen Konflikte zwischen zusammengeführten Zweigen auftreten.

git status

Es hilft, in Konflikt stehende Dateien zu identifizieren.

git diff

Dies hilft beim Auffinden von Unterschieden zwischen den Zuständen eines Repositorys oder einer Datei. Es wird verwendet, um Zusammenführungskonflikte vorherzusagen und zu verhindern. Einige Tools wie die folgenden werden verwendet, wenn ein Zusammenführungsfehler auftritt.

git reset --mixed

Es wird verwendet, um die am aktuellen Verzeichnis vorgenommenen Änderungen rückgängig zu machen.

git checkout

Es wird zum Rückgängigmachen von Änderungen an Dateien oder häufiger zum Ändern von Zweigen verwendet. Einige Tools wie die folgenden werden verwendet, wenn während einer Zusammenführung Konflikte auftreten.

git reset

Es wird verwendet, um konfliktbehaftete Dateien während eines Zusammenführungskonflikts zurückzusetzen.

git merge --abort

Wenn Sie das Argument –abort mit git merge übergeben, können Sie den Zusammenführungsprozess beenden und den Zweig in seinen ursprünglichen Zustand zurückversetzen.

Vorteile der Lösung von Git Merge-Konflikten

  • Es wird verwendet, um Zweige, Dateien oder Repositorys ohne Konflikte zu erstellen, zu ändern, zu löschen.
  • Es kann verwendet werden, um verschiedene Versionen des Codes zusammenzuführen.
  • Es hilft auch, Änderungen an entfernten Zweigen vorzunehmen und diese auszuchecken, während gleichzeitig Konflikte vermieden werden.
  • Es hilft, Releases ohne Konflikte zu verwalten und zu behandeln.
  • Hält das Repository und den Prozess sauber und lesbar.

Fazit

Git ist vielseitig einsetzbar und wird von Entwicklern, Produktmanagern und Datenwissenschaftlern intensiv genutzt. Git-Befehle sind sehr effektiv und können sehr nützlich sein. Ein Konflikt in Git entsteht, wenn zwei verschiedene Zweige versuchen, dieselbe Zeile in einer Datei zu bearbeiten, oder wenn eine Datei in einem bestimmten Zweig gelöscht, aber in einem anderen bearbeitet wird. Git verarbeitet die meisten Zusammenführungen erfolgreich mit seinen Zusammenführungsfunktionen, kann jedoch auch manuell mithilfe von Tools wie Git-Status, Zurücksetzen, Auschecken von Git und Git-Protokoll aufgelöst werden.

Empfohlene Artikel

Dies ist eine Anleitung zum Lösen von Zusammenführungskonflikten in GIT. Hier besprechen wir, wie Git Merge Conflicts mit verschiedenen Befehlen und ihren Vorteilen effizient gelöst werden können. Sie können auch unsere anderen Artikelvorschläge durchgehen, um mehr zu erfahren -

  1. Git Alternativen mit Vorteilen
  2. Einführung in Git Tools
  3. GitHub vs SVN - Top Unterschiede
  4. Top 11 GIT Interview Fragen
  5. Git Push
  6. Tableau-Versionen
  7. Komplette Anleitung zu Git Remote Command
  8. Drei Stufen des Git-Lebenszyklus mit dem Workflow

Kategorie: