Auflösen von Mergekonflikten in Visual Studio

Gilt für:yesVisual Studio noVisual Studio für MacnoVisual Studio Code

Wenn Sie einen Branch in einen anderen zusammenführen, können Dateiänderungen von Commits in einem Branch mit den Änderungen in der anderen Verzweigung in Konflikt treten. Git versucht, diese Änderungen mithilfe des Verlaufs in Ihrem Repository zu beheben, um zu bestimmen, wie die zusammengeführten Dateien aussehen sollen. Wenn nicht klar ist, wie Änderungen zusammengeführt werden sollen, hält Git die Zusammenführung an und teilt Ihnen mit, welche Dateien in Konflikt stehen.

Grundlegendes zu Mergekonflikten

Die folgende Abbildung zeigt ein einfaches Beispiel für den Konflikt von Änderungen in Git. In diesem Beispiel führen der Mainbranch und der Bugfixbranch-Branch Aktualisierungen an den gleichen Quellcodezeilen durch.

Diagramm, das einen Mergekonflikt zeigt.

Wenn Sie versuchen, den Bugfix-Branch in main zusammenzuführen, kann Git nicht ermitteln, welche Änderungen in der zusammengeführten Version verwendet werden sollen. Möglicherweise möchten Sie die Änderungen im Mainbranch, im Bugfixbranch oder in einer Kombination aus beiden beibehalten. Beheben Sie diesen Konflikt mit einem Mergecommit im Mainbranch, der die in Konflikt stehenden Änderungen zwischen den beiden Branches abgleicht.

Diagramm, das zeigt, wie ein Mergecommit einen Mergekonflikt löst.

Das häufigste Mergekonfliktszenario tritt auf, wenn Sie Updates von einem Remotebranch in Ihren lokalen Branch pullen (z. B. von origin/bugfix in Ihren lokalen Bugfix-Branch). Sie können diese Konflikte auf die gleiche Weise lösen: Erstellen Sie einen Commit für Ihren lokalen Branch, um die Änderungen abzugleichen, und schließen Sie dann die Zusammenführung ab.

Verhindern von Mergekonflikten

Git ist in den meisten Fällen gut darin, Dateiänderungen automatisch zusammenzuführen, solange sich der Dateiinhalt zwischen Commits nicht erheblich ändert. Wenn Ihr Branch weit hinter Ihrem Hauptbranch liegt, sollten Sie erwägen, Ihre Verzweigungen neu zu erstellen, bevor Sie einen Pull Request öffnen. Rebased Branches werden ohne Konflikte in Ihren Mainbranch zusammengeführt.

Lösen von Mergekonflikten

  • Wenn Sie mit anderen Personen in demselben Branch zusammenarbeiten, werden möglicherweise Mergekonflikte angezeigt, wenn Sie Ihre Änderungen pushen.

    Screenshot: Mergekonflikt nach einem Push

  • Visual Studio erkennt, ob sich der lokale Branch, an dem Sie gearbeitet haben, hinter dem Remotenachverfolgungsbranch befindet, und bietet Ihnen dann Optionen zur Auswahl.

    Screenshot der verfügbaren Optionen, wenn sich der lokale Branch hinter dem Remotebranch befindet.

    Hinweis

    Wenn Ihr Remoterepository Push erzwingen unterstützt, können Sie es mithilfe vonGit-Einstellungen> aktivieren.

    Wählen Sie in diesem Beispiel Pull und dann Push aus, um änderungen einzuschließen, die in das Remoterepository eingeführt wurden. Wenn beim Pullen von Änderungen oder beim Versuch, zwei Branches zusammenzuführen, Mergekonflikte auftreten, informiert Sie Visual Studio im Git Changes-Fenster , im Git-Repositoryfenster und bei dateien, die Konflikte aufweisen.

    Screenshot einer Benachrichtigung über einen Mergekonflikt.

  • Das Git Changes-Fenster zeigt eine Liste der Dateien mit Konflikten unter Unvermerged Changes an. Doppelklicken Sie auf eine Datei, um mit dem Lösen von Konflikten zu beginnen. Wenn Sie eine Datei mit Konflikten im Editor geöffnet haben, können Sie Merge-Editor öffnen auswählen.

    Screenshot: Status des Zusammenführungskonflikts im Git Changes-Fenster

  • Beginnen Sie im Merge-Editor mit der Lösung Ihres Konflikts, indem Sie eine der folgenden Methoden verwenden (wie im nummerierten Screenshot dargestellt):

    1. Gehen Sie Zeilen für Zeile über Ihre Konflikte, und wählen Sie die rechte oder linke Seite, indem Sie die Kontrollkästchen aktivieren.
    2. Behalten Oder ignorieren Sie alle Ihre in Konflikt stehenden Änderungen.
    3. Bearbeiten Sie Ihren Code manuell im Ergebnisfenster .

    Screenshot: Auflösen eines Mergekonflikts in Visual Studio 2022

    Tipp

    Wenn Ihnen das Standardlayout im Merge-Editor nicht gefällt, können Sie es mithilfe des Zahnrad-Dropdownmenüs ändern.

    Screenshot der Layoutoptionen des Merge-Editors.

    Der folgende Screenshot zeigt beispielsweise, wie die vertikale Ansicht aussieht:

    Screenshot der vertikalen Ansicht auf der Benutzeroberfläche des Merge-Editors.

  • Wenn Sie mit dem Auflösen der Mergekonflikte fertig sind, wählen Sie Merge akzeptieren aus. Wiederholen Sie diesen Vorgang für alle in Konflikt stehenden Dateien.

    Screenshot der Aktion

  • Verwenden Sie das Git Changes-Fenster , um einen Mergecommit zu erstellen und den Konflikt zu beheben.

    Screenshot: Erstellen eines Mergecommits mithilfe des Git Changes-Fensters

    Hinweis

    Wenn Sie alle Ihre Änderungen an einer Datei beibehalten müssen, können Sie im Abschnitt Unvermergte Änderungen mit der rechten Maustaste darauf klicken und auf Aktuell (lokal) beibehalten klicken, ohne den Merge-Editor öffnen zu müssen.

    Screenshot der Menüoption

Tipp

Weitere Informationen zu den verfügbaren Barrierefreiheitsoptionen finden Sie im Abschnitt Git-Tastenkombinationen der Seite Tipps und Tricks für die Barrierefreiheit für Visual Studio .

Nächste Schritte

Weitere Informationen zum Lösen von Konflikten finden Sie auf der Git-Webseite für den Mergebefehl.

Siehe auch