Auflösen eines Merge-Konflikts
Im nächsten Schritt führen wir die Branches issue2
und issue3
, die wir im letzten Schritt erstellt haben, mit dem Haupt-Branch zusammen.
Wechseln Sie zunächst zu main
, und führen Sie issue2
mit einem Fast-Forward-Merge zusammen.
$ git checkout main
Switched to branch 'main'
$ git merge issue2
Updating b2b23c4..8f7aa27
Fast-forward
myfile.txt | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
Dies ist nun der Verlauf:
Versuchen Sie im nächsten Schritt, issue3
mit main
zusammenzuführen.
$ git merge issue3
Auto-merging myfile.txt
CONFLICT (content): Merge conflict in myfile.txt
Automatic merge failed; fix conflicts and then commit the result.
In diesem Fall hat Git einen Konflikt erkannt, da die Datei myfile.txt
in jedem Branch einen anderen Inhalt in derselben Zeile hat und issue3
nicht automatisch mit main
zusammenführen kann.
Die Datei myfile.txt
sieht nun etwa so aus:
Anyone can learn Git with this tutorial and Backlog
add: Register a change in an index
<<<<<<< HEAD
commit: Save the status of an index
=======
pull: Obtain the content of a remote repository
>>>>>>> issue3
In der Datei myfile.txt
finden Sie von Git hinzugefügte Markierungen mit Informationen über den Konflikt. Wir müssen den Konflikt manuell beheben, wie unten gezeigt.
Anyone can learn Git with this tutorial and Backlog
add: Register a change in an index
commit: Save the status of an index
pull: Obtain the content of a remote repository
Sobald der Konflikt behoben ist, übertragen Sie die Änderung per Commit.
$ git add myfile.txt
$ git commit -m "merge issue3 branch"
# On branch main
nothing to commit (working directory clean)
Der Verlauf sieht dann folgendermaßen aus:
Sie können sehen, dass ein neuer Merge-Commit als Ergebnis der Konfliktlösung erstellt worden ist. Außerdem verweist der Haupt-Branch jetzt auf den letzten Merge-Commit. Dies ist ein Nicht-Fast-Forward-Merge.