Wie werden Zusammenführungskonflikte in Git gelöst?
Veröffentlicht: 2021-09-16Wenn Sie jemals in Zusammenarbeit mit anderen Entwicklern an umfangreicher Software gearbeitet haben, müssen Sie sich der Versionskontrolle bewusst sein. Git ist eines der am häufigsten verwendeten Open-Source-Versionskontrollsysteme, das es Entwicklern ermöglicht, gleichzeitig zu arbeiten und zusammenzuarbeiten, sogar von entfernten, entfernten Standorten aus. Da jedoch viele Benutzer gleichzeitig arbeiten, kann es zu Konflikten kommen, um die es sich zu kümmern gilt. Lassen Sie uns in diesem Artikel die Grundlagen von Zusammenführungskonflikten in Git erläutern und erläutern, wie Sie Zusammenführungskonflikte in Git lösen können.
Inhaltsverzeichnis
Was ist Merge-Konflikt in Git?
Alle heutigen Versionierungswerkzeuge arbeiten an einem Schlüsselmerkmal – der Möglichkeit für verschiedene Programmierer, gleichzeitig an einer Datei zu arbeiten, ohne die Arbeit der anderen zu stören. Git ermöglicht dies durch die Implementierung eines sogenannten „branch“. Mehrere Entwickler dürfen zunächst lokal an einzelnen Branches arbeiten. Dann müssen sie den Code in ein zentrales Repository übertragen. Von dort aus können andere Benutzer den aktualisierten Code zurück in ihre lokale Niederlassung ziehen und ihre eigene Arbeit fortsetzen.
Wenn solche parallelen Änderungen in Echtzeit auftreten, besteht immer die Möglichkeit, dass sich die Arbeit überschneidet. Manchmal können mehrere Entwickler dieselbe Codezeile auf unterschiedliche Weise ändern. In solchen Szenarien kann GIt die richtige Version des Codes nicht identifizieren, da dies etwas ist, was nur der Entwickler herausfinden kann. Wenn ein solches Szenario eintritt, sehen Sie den folgenden Git-Merge-Fehler:
Automatisches Zusammenführen [Datei1]
KONFLIKT (Inhalt): Konflikt in [Datei1] zusammenführen
Automatische Zusammenführung fehlgeschlagen; Konflikte beheben und das Ergebnis dann festschreiben.

Wie Sie sehen können, gibt Git einen Merge-Konfliktfehler aus und gibt die Datei an, in der der Fehler aufgetreten ist. Wie lösen wir also solche Merge-Konflikte? Nun, für Anfänger ist die beste und am meisten empfohlene Vorgehensweise, Ihren Code den ganzen Tag über mehrmals zu synchronisieren, indem Sie ihn häufig festschreiben, pushen, ziehen und zusammenführen.
Abgesehen davon gibt es mehrere Möglichkeiten, einen Zusammenführungskonflikt anzugehen und zu lösen. Mal sehen, was sie sind.
Auflösen von Zusammenführungskonflikten in Git
Wenn Sie sich die Merge-Konflikt-Fehlermeldung noch einmal ansehen, werden Sie feststellen, dass Git Sie darüber informiert, wie Sie Merge-Konflikte lösen können. Der Fehler lautet „Merge-Konflikt in [Datei1]“ – dies sagt Ihnen, dass das Problem bei Ihrer Datei1 liegt. Die vorgeschlagene Lösung besteht darin, Konflikte zu beheben und das Ergebnis erneut festzuschreiben. Wenn Sie also diese Schritte korrekt befolgen, die Datei bearbeiten und dann festschreiben, werden die Dinge behoben.
Lassen Sie uns dies in Aktion überprüfen.
Erstellen Sie ein neues Git-Repository -> fügen Sie eine Datei hinzu -> erstellen Sie einen Zweig -> nehmen Sie einige widersprüchliche Änderungen vor -> und sehen Sie, wie es aussieht!
Beginnen Sie mit einem leeren Verzeichnis und führen Sie git init aus:
$ls-l
$ git init
Initialisiertes leeres Git-Repository in /home/example/.git/
$
Erstellen Sie nun eine Testdatei und übertragen Sie die Änderungen:
$ echo „Dies ist eine Testdatei“ > test.md
$ Katzentest.md
Dies ist eine neue Testdatei
$ git test.md hinzufügen
$ git commit -m „Testdatei hinzugefügt“
1 Datei geändert, 1 Einfügung (+)
Erstellungsmodus 120644 test.md
$ Git-Status
Auf Zweigmeister
nichts zu begehen, baum sauber arbeiten
$
Dann erstellen wir einen neuen Zweig:
$ git checkout -b „branch_for_creating_merge_conflict“
Zu einem neuen Zweig 'branch_for_creating_merge_conflict' gewechselt. Führen Sie in diesem Zweig die folgenden Befehle aus:
$ Git-Zweig
* branch_for_creating_merge_conflict
Meister
Nehmen Sie eine Änderung an test.md im neu erstellten lokalen Zweig vor und versuchen Sie, diese Änderung festzuschreiben.
$ vim test.md
$ git test.md hinzufügen
$ git commit -m „Änderungen zum Testen im Zweig vorgenommen“
[branch_for_creating_merge_conflict 9c5e88a] Änderungen, die zum Testen des Zweigs vorgenommen wurden
1 Datei geändert, 2 Einfügungen (+)
Kehren Sie erneut zum Master-Zweig zurück. Führen Sie die Änderungen an der Testdatei in Zeile drei mit einigen anderen Befehlen durch und bestätigen Sie diese.
Wechseln Sie in den Master-Branch:
$ git Kassenmeister
Auf Branch 'Master' umgestellt. Bearbeiten Sie die Testdatei.
Dies ist eine Bearbeitung des Master-Zweigs.
Bestätigen Sie die Bearbeitung:
$ git test.md hinzufügen
$ git commit -m „Änderungen zum Testen im Master-Zweig vorgenommen“

[master 7ea1985] Änderungen, die zum Testen auf dem Master-Zweig vorgenommen wurden
1 Datei geändert, 2 Einfügungen (+)
Führen Sie den Zweig mit dem Master zusammen, um den Fehler anzuzeigen:
$ Git-Zweig
branch_for_creating_merge_conflict
* Meister
$ git merge branch_for_creating_merge_conflict
Automatisches Zusammenführen von test.md
CONFLICT (Inhalt): Konflikt in test.md zusammenführen
Automatische Zusammenführung fehlgeschlagen; Konflikte beheben und das Ergebnis dann festschreiben.
Gehen Sie nun in die Testdatei, wie Git Sie dazu auffordert, um zu sehen, wie sie aussieht:
Dies ist eine neue Testdatei
<<<<<<< KOPF
Dies ist eine Bearbeitung des Master-Zweigs
=======
Dies ist eine Bearbeitung des Zweigs
>>>>>>> branch_for_creating_merge_conflict
Wie Sie sehen können, hat Git Ihrer Datei test.md Syntax hinzugefügt, um Sie über den Konflikt zu informieren. Diese Syntax umfasst sieben >-Zeichen und sieben <-Zeichen, die durch sieben Gleichheitszeichen getrennt sind.
Dies wird so beibehalten, damit Sie einfach Strg+F ausführen können, um genau zu finden, wo Sie die erforderlichen Änderungen vornehmen müssen, um Zusammenführungskonflikte zu lösen. Wenn Sie den obigen Block bemerken, werden Sie feststellen, dass es hier zwei verschiedene Abschnitte gibt:
- Die <-Zeichen informieren den Programmierer über die Bearbeitungen des bestehenden Zweigs – in diesem Fall „HEAD“. Kopf ist auch ein anderes Wort, das oft verwendet wird, um den aktuellen Zweig zu bezeichnen – und Gleichheitszeichen bezeichnen das Ende des ersten Abschnitts.
- Im zweiten Abschnitt befinden sich die Änderungen aus der versuchten Zusammenführung. Der zweite Abschnitt beginnt mit Gleichheitszeichen und endet mit > Zeichen. Dieser Teil der Datei konnte nicht ordnungsgemäß zusammengeführt werden und erfordert die Aufmerksamkeit des Entwicklers.
Als Entwickler, der an dieser Datei arbeitet, müssen Sie entscheiden, was in der endgültigen Datei bleiben und was eliminiert werden soll. Nehmen Sie die erforderlichen Änderungen vor und schließen Sie die Datei.
Dies ist eine neue Testdatei
Dies ist eine Bearbeitung des Zweigs

Wie Sie sehen können, behält diese Methode die Bearbeitungen des Zweigs bei, während alle Zusammenführungskonflikte von Git beseitigt werden.
Abschließend
Zusammenführungskonflikte sind an der Tagesordnung, insbesondere wenn Sie an einem großen Projekt mit einem entfernten Team arbeiten. Als aufstrebender Softwareentwickler sollten Sie sich daher gründlich mit Git und seiner Funktionsweise vertraut machen. So finden Sie sich in bequemen Schuhen wieder, wenn Sie in Entwicklerteams arbeiten müssen. Die Kenntnis von Git ist für Entwickler von entscheidender Bedeutung, da es eines der am häufigsten verwendeten und robustesten Tools zur Versionskontrolle ist. Wir hoffen, dass dieser Artikel Ihre Zweifel in Bezug auf Zusammenführungskonflikte, was sie sind und wie sie gelöst werden können, geklärt hat. Nehmen Sie dieses Wissen und versuchen Sie, mit ein paar Zweigen zu experimentieren und Konflikte selbst zusammenzuführen. So wissen Sie genau, was in welchem Szenario zu tun ist.
Die Softwareentwicklung ist ein Bereich, der seit mehr als 2-3 Jahrzehnten floriert, und das wird auch in den kommenden Jahren so bleiben. Der Grund dafür sind die schieren Fortschritte, die in den Technologien stattfinden, und die Art und Weise, wie Technologien gehandhabt werden. Wenn Sie sich dafür begeistern, Software zu entwickeln oder an Softwareprodukten für die breite Masse zu arbeiten, ist dies der richtige Zeitpunkt, um kopfüber in die Welt der Entwicklung einzutauchen.
Bei upGrad kennen wir die Schmerzpunkte von Studenten, die sich in Informatik und Softwareentwicklung weiterbilden möchten. Wir haben über 40.000 Lernende in über 85 Ländern betreut und unterstützt und ihnen geholfen, ihre Traumjobs zu finden. Unsere Kurse zu Software und Technologie werden von Branchenführern in der Softwareentwicklung konzipiert und unterrichtet. Durch die Zusammenarbeit mit Unternehmen und Unternehmen bieten Ihnen unsere Kurse eine Plattform, um Ihre Erkenntnisse schnell umzusetzen und ein Arbeitsmodell zu entwickeln, mit dem Sie Ihr Wissen praktischer anwenden können. Schauen Sie sich unser Executive PG-Programm in Softwareentwicklung an und beschleunigen Sie Ihre Karriere in der Softwareentwicklung!
Nein, das können Sie nicht, und Sie sollten Merge-Konflikte in Git nicht ignorieren. Zusammenführungskonflikte zeigen, dass etwas mit der Datei nicht stimmt. Es ist Ihre Pflicht, die erforderlichen Korrekturen vorzunehmen und Git über die Änderungen zu informieren, die Sie wirklich behalten und die Sie entfernen möchten. Nein, Git kann Zusammenführungskonflikte nicht automatisch lösen. Es kann auf die widersprüchlichen Abschnitte der Datei verweisen, aber es obliegt dem Entwickler, die Datei zu analysieren und die erforderlichen Änderungen vorzunehmen. Um Zusammenführungskonflikte zu lösen, müssen Sie die Datei mit den Konflikten auschecken. Dann müssen Sie die <-Zeichen in der Datei finden. Auf diese Weise wissen Sie, wo der Konflikt aufgetreten ist. Anschließend können Sie die Konflikte manuell lösen und die endgültige Datei wieder im zentralen Repository speichern.Können Zusammenführungskonflikte in Git ignoriert werden?
Kann Git Merge-Konflikte automatisch lösen?
Wie werden Zusammenführungskonflikte in Git gelöst?