Zusammenführungskonflikte treten auf, wenn konkurrierende Änderungen an derselben Zeile einer Datei vorgenommen werden, oder wenn eine Person eine Datei bearbeitet und eine andere Person dieselbe Datei löscht. Siehe Konflikte zusammenführen.
Tipp
Sie können den Konflikt-Editor GitHub verwenden, um konkurrierende Konflikte zwischen Verzweigungen zu lösen, die Teil einer Pullanforderung sind. Siehe Auflösen eines Zusammenführungskonflikts auf GitHub.
Konflikte beim Zusammenführen konkurrierender Zeilenänderungen
Wenn sich konkurrierende Änderungen auf die gleichen Zeilen auswirken, wählen Sie aus, welche Änderungen beibehalten werden sollen, und übernehmen Sie dann die Lösung.
-
Öffnen Sie Ihr Terminal oder Git Bash.
-
Navigiere zu dem lokalen Git-Repository, in dem der Mergekonflikt auftritt.
cd REPOSITORY-NAME -
Listet die dateien auf, die vom Zusammenführungskonflikt betroffen sind. In diesem Beispiel tritt in der Datei styleguide.md ein Mergekonflikt auf.
$ git status > # On branch branch-b > # You have unmerged paths. > # (fix conflicts and run "git commit") > # > # Unmerged paths: > # (use "git add <file>..." to mark resolution) > # > # both modified: styleguide.md > # > no changes added to commit (use "git add" and/or "git commit -a") -
Öffnen Sie Den bevorzugten Text-Editor, z Visual Studio Code. B. den Texteditor, und navigieren Sie zu der Datei, die Konflikte mit dem Zusammenführen aufweist.
-
Suchen Sie die Datei nach der Konfliktmarkierung
<<<<<<<. Die Änderungen vom HEAD- oder Basiszweig werden nach<<<<<<< HEAD, gefolgt von=======, und dann die Änderungen von der anderen Verzweigung und>>>>>>> BRANCH-NAME.If you have questions, please <<<<<<< HEAD open an issue ======= ask your question in IRC. >>>>>>> branch-a -
Entscheide, ob du nur die Änderungen deines Branch beibehalten, nur die Änderungen des anderen Branch beibehalten oder eine brandneue Änderung erstellen möchtest, die die Änderungen aus beiden Branches beinhalten kann. Lösche die Konfliktmarker
<<<<<<<,=======und>>>>>>>, und nimm die gewünschten Änderungen im endgültigen Merge vor. Sie können beispielsweise beide Änderungen beibehalten:If you have questions, please open an issue or ask in our IRC channel if it's more urgent. -
Stufen Sie Ihre Änderungen auf.
git add . -
Übertragen Sie Ihre Änderungen mit einem Kommentar.
git commit -m "Resolve merge conflict by incorporating both suggestions"
Sie können nun die Verzweigungen über die Befehlszeile zusammenführen oder Ihre Änderungen an Ihr Remote-RepositoryGitHub übertragen und Ihre Änderungen in einer Pullanforderung zusammenführen .
Mergekonflikte durch das Entfernen einer Datei
Wenn eine Verzweigung eine Datei löscht und eine andere Verzweigung dieselbe Datei bearbeitet, wählen Sie aus, ob die Datei beibehalten oder gelöscht werden soll, und übernehmen Sie dann die Auflösung.
-
Öffnen Sie Ihr Terminal oder Git Bash.
-
Navigiere zu dem lokalen Git-Repository, in dem der Mergekonflikt auftritt.
cd REPOSITORY-NAME -
Listet die dateien auf, die vom Zusammenführungskonflikt betroffen sind. In diesem Beispiel weist die Datei
README.mdeinen Mergekonflikt auf.$ git status > # On branch main > # Your branch and 'origin/main' have diverged, > # and have 1 and 2 different commits each, respectively. > # (use "git pull" to merge the remote branch into yours) > # You have unmerged paths. > # (fix conflicts and run "git commit") > # > # Unmerged paths: > # (use "git add/rm <file>..." as appropriate to mark resolution) > # > # deleted by us: README.md > # > # no changes added to commit (use "git add" and/or "git commit -a") -
Öffnen Sie Den bevorzugten Text-Editor, z Visual Studio Code. B. den Texteditor, und navigieren Sie zu der Datei, die Konflikte mit dem Zusammenführen aufweist.
-
Entscheiden Sie, ob die entfernte Datei beibehalten werden soll. So fügen Sie es wieder zu Ihrem Repository hinzu:
git add README.mdSo löschst Du die Datei aus Deinem Repository:
$ git rm README.md > README.md: needs merge > rm 'README.md' -
Übertragen Sie Ihre Änderungen mit einem Kommentar.
$ git commit -m "Resolve merge conflict by keeping README.md file" > [branch-d 6f89e49] Merge branch 'branch-c' into branch-d
Mit gelösten Zusammenführungskonflikten können Sie jetzt Ihre Änderungen an Ihr Remote-Repository GitHub übertragen oder Ihre Pullanforderung in ihren Basiszweig zusammenführen.