Auflösen von Mergekonflikten in Visual Studio

Wenn Sie einen Branch in einen anderen mergen, kann es zu Konflikten durch Dateiänderungen aus Commits in einem Branch mit den Änderungen im anderen Branch kommen. Git versucht, diese Änderungen über den Verlauf in Ihrem Repository aufzulösen, um zu bestimmen, wie die gemergten Dateien aussehen sollen. Wenn nicht klar ist, wie Änderungen gemergt werden sollen, stoppt Git den Mergevorgang und teilt Ihnen mit, welche Dateikonflikte bestehen.

Verhindern von Mergekonflikten

Git ist in den meisten Fällen problemlos in der Lage, Dateiänderungen automatisch zu mergen, solange sich der Dateiinhalt zwischen Commits nicht erheblich ändert. Wenn Ihr Branch weit vom Mainbranch abweicht, sollten Sie Ihre Branches umbasieren, bevor Sie einen Pull Request öffnen. Umbasierte Branches werden ohne Konflikte in Ihren Mainbranch gemergt.

Lösen von Mergekonflikten

  • Wenn Sie mit anderen im selben Branch zusammenarbeiten, können Mergekonflikte auftreten, wenn Sie Ihre Änderungen pushen.

    Screenshot: Mergekonflikt nach einem Push.

  • Visual Studio erkennt, ob sich der lokale Branch, an dem Sie gearbeitet haben, vom Remotenachverfolgungsbranch abweicht, und stellt Ihnen dann Auswahlmöglichkeiten zur Verfügung.

    Screenshot: Verfügbare Optionen, wenn der lokale Branch von Remotebranch abweicht.

    Hinweis

    Wenn Ihr Remoterepository erzwungenen Push unterstützt, können Sie es über Git>Einstellungen aktivieren.

    Wählen Sie in diesem Beispiel Pullen, dann Pushen aus, um Änderungen einzubinden, die im Remoterepository vorgenommen wurden. Wenn beim Pullen von Änderungen oder beim Mergen von zwei Branches Mergekonflikte auftreten, informiert Visual Studio Sie im Fenster Git-Änderungen, im Fenster Git-Repository und bei Dateien, die Konflikte aufweisen.

    Screenshot: Benachrichtigung zu Mergekonflikten.

  • Im Fenster Git-Changes wird eine Liste von Dateien mit Konflikten unter Nicht gemergte Änderungen angezeigt. Doppelklicken Sie auf eine Datei, um die Konfliktlösung zu beginnen. Wenn Sie eine Datei mit Konflikten im Editor geöffnet haben, können Sie auch Merge-Editor öffnen auswählen.

    Screenshot: Mergekonfliktstatus im Fenster „Git-Änderungen“.

  • Beginnen Sie im Merge-Editor mit der Konfliktlösungen mit einer der folgenden Methoden (wie im nummerierten Screenshot dargestellt):

    1. Gehen Sie die Konflikte Zeile für Zeile durch, und wählen Sie die rechte oder linke Seite aus, indem Sie die entsprechenden Kontrollkästchen aktivieren.

      - oder -

    2. Wählen Sie die Schaltfläche Eingehende annehmen aus (oder drücken Sie F10), um alle eingehenden Änderungen zu akzeptieren, oder drücken Sie die Schaltfläche Aktuelle übernehmen (oder drücken Sie F11), um die aktuelle Version aller widersprüchlichen Änderungen beizubehalten. Sie können dasselbe tun, indem Sie am oberen Rand eines der Kontrollkästchen oben in den Rahmen nebeneinander auswählen.

      - oder -

    3. Bearbeiten Sie Ihren Code manuell im Fenster Ergebnis.

    Screenshot: Auflösen eines Mergekonflikts in Visual Studio 2022.

    Tipp

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

    Screenshot: Layoutoptionen des Merge-Editors.

    Der folgende Screenshot veranschaulicht beispielsweise die Darstellung der vertikalen Ansicht:

    Screenshot: Vertikale Ansicht in der Merge-Editor-Benutzeroberfläche.

  • Wählen Sie nach der Auflösung der Mergekonflikte Merge akzeptieren aus. Wiederholen Sie diesen Vorgang für alle in Konflikt stehenden Dateien.

    Screenshot: Aktion „Merge akzeptieren“ in Visual Studio 2022.

  • Erstellen Sie im Fenster Git-Änderungen einen Mergecommit, um den Konflikt zu beheben.

    Screenshot: Erstellen eines Mergecommits im Fenster „Git-Änderungen“.

    Hinweis

    Wenn Sie alle Ihre Änderungen an einer Datei beibehalten wollen, können Sie mit der rechten Maustaste im Abschnitt Nicht gemergte Änderungen auf die Datei klicken, und dann Aktuelle beibehalten (Lokal) auswählen, ohne den Merge-Editor öffnen zu müssen.

    Screenshot: Menüoption „Aktuelle beibehalten“.

Tipp

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

Konfigurieren des Diff-Tools

Wenn Sie die Datei .gitconfig so festlegen, dass das Diff-Tool eines Drittanbieters wie BeyondCompare oder KDiff3 verwendet wird, wird das von Visual Studio respektiert. Statt des in Visual Studio angezeigten Vergleichs wird dann im gewählten Tool ein separates Fenster geöffnet. Ein Beispiel hierzu finden Sie in dieser Frage zu StackOverflow.