Konflikt beim Zusammenführen von Branches in Git
Beim Zusammenführen zweier Branches kann es zu Konflikten kommen,
wenn wir in jedem Branch dieselbe Datei geändert haben.
Betrachten wir eine Situation, in der wir in beiden
Branches master und test aus
der vorherigen Lektion die gleiche Datei
file.txt geändert und einen Commit
erstellt haben.
Anschließend haben wir den Merge-Befehl ausgeführt:
git merge test
Als Ergebnis sehen wir einen Fehler:
Auto-merging file.txt
CONFLICT (content): Merge conflict in file.txt
Automatic merge failed; fix conflicts and then commit the result.
Zusätzlich sehen wir im geänderten File Konfliktmarkierungen:
<<<<<<< HEAD
hier stehen die Änderungen aus dem master-Branch
=======
hier stehen die Änderungen aus dem test-Branch
>>>>>>> test
Im oberen Teil der Nachricht sind die Änderungen angegeben, die im aktuell Hauptbranch gemacht wurden, im unteren Teil - die im zweiten Branch, den wir mit dem ersten zusammenführen wollen. Um den Konflikt zu lösen, müssen wir den Inhalt der Datei auf einen gemeinsamen Stand bringen, indem wir zuvor (manuell im Editor!) alle Konfliktbezeichnungen entfernen, die Git darin hinterlassen hat.
Nachdem wir den Konflikt gelöst haben
(d.h. den korrekten Code in der Datei belassen haben),
stagen wir unsere Datei und machen einen Commit
im Branch master, in dem wir
uns aktuell befinden:
git add file.txt
git commit -m "Zusammenführung"
Erst danach können wir zum zweiten Branch
test wechseln und alle
gleichen Operationen durchführen wie im Branch master,
einschließlich des Ersetzens des Inhalts der Datei
file.txt durch denselben wie im ersten Branch:
git add file.txt
git commit -m "Zusammenführung"
Jetzt können wir wieder zum Hauptbranch wechseln und den zweiten Branch hinein mergen:
git switch master
git merge test
Erzeugen Sie absichtlich einen Konflikt beim Zusammenführen von Branches. Lösen Sie ihn anschließend.