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.
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.
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.
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.
Beginnen Sie im Merge-Editor mit der Konfliktlösungen mit einer der folgenden Methoden (wie im nummerierten Screenshot dargestellt):
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 -
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 -
Bearbeiten Sie Ihren Code manuell im Fenster Ergebnis.
Wählen Sie nach der Auflösung der Mergekonflikte Merge akzeptieren aus. Wiederholen Sie diesen Vorgang für alle in Konflikt stehenden Dateien.
Erstellen Sie im Fenster Git-Änderungen einen Mergecommit, um den Konflikt zu beheben.
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.
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.