Lösen von Mergekonflikten

Azure Repos | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS-2018 | TFS-2017 | TFS-2015 | VS 2017 | VS 2015 | VS 2013

Wenn Sie einen Branch in einen anderen zusammen führen , können Dateiänderungen von Commits in einer Verzweigung mit den Änderungen in der anderen Verzweigung in Konflikt stehen. Git versucht, diese Änderungen mit dem Verlauf in Ihrem Repository aufzulösen, um zu bestimmen, wie die zusammengeführten Dateien aussehen sollen. Wenn es nicht klar ist, wie Änderungen zusammengeführt werden, stoppt git die Zusammenführung und gibt Aufschluss darüber, welche Dateien einen Konflikt verursachen.

In diesem Tutorial lernen Sie Folgendes:

  • Verstehen von Mergekonflikten
  • Lösen von Mergekonflikten

Verstehen von Mergekonflikten

Die folgende Abbildung zeigt ein sehr einfaches Beispiel für den Konflikt zwischen Änderungen in git. Sowohl der Haupt-als auch der bugfixbranch nehmen Aktualisierungen an denselben Quell Codezeilen vor.

Main-und bugfixbranch weisen Änderungen auf, die einen Konflikt verursachen

Wenn Sie versuchen, den bugfixbranch 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 in der Main-Verzweigung, der bugfixverzweigung oder einer Kombination der beiden beibehalten. Lösen Sie diesen Konflikt mit einem mergecommit in der Main-Verzweigung, die die in Konflikt stehenden Änderungen zwischen den beiden Verzweigungen widerspricht.

Erstellen eines mergecommits zum Auflösen des Konflikts zwischen den beiden Verzweigungen

Der häufigste Zusammenschluss Konflikt besteht darin, dass Sie Aktualisierungen von einem remotebranch in Ihren lokalen Branch abrufen, z origin/bugfix . b. von in Ihren lokalen bugfix Branch. Beheben Sie diese Konflikte auf die gleiche Weise: Erstellen Sie einen mergecommit für den lokalen Branch, der die Änderungen abschließt und den Merge schließt.

Was macht git, um Mergekonflikte zu verhindern?

Git speichert den gesamten Verlauf aller Änderungen, die in Ihrem Repository vorgenommen wurden. Git verwendet diesen Verlauf sowie die Beziehungen zwischen Commits, um festzustellen, ob die Änderungen sortiert und der Merge automatisch aufgelöst werden können. Konflikte treten nur auf, wenn aus dem Verlauf hervorgeht, wie Änderungen an denselben Zeilen in denselben Dateien zusammengeführt werden sollen.

Verhindern von Mergekonflikten

Git ist in den meisten Fällen sehr gut für das automatische Zusammenführen von Dateiänderungen geeignet, vorausgesetzt, dass sich die Dateiinhalte zwischen Commits nicht erheblich ändern. Sie sollten Verzweigungen neu anordnen , bevor Sie eine Pull Request öffnen, wenn sich Ihre Verzweigung weit hinter Ihrem hauptbranch befindet. Rebased branches werden ohne Konflikte in ihren hauptbranch zusammengeführt.

Lösen von Mergekonflikten

Hinweis

Visual Studio 2019 umfasst nun ein neues Git-Tool, das beim Verbinden mit einem Git-Repository ein verbessertes Benutzererlebnis bietet. Wenn Sie dieses Tool aktivieren, wird das Tool Team Explorer bei der Verbindung mit einem Git-Repository effektiv deaktiviert. Sie können das neue Tool abrufen, indem Sie Visual Studio 2019 Version 16.6 herunterladen. Informationen zum Aktivieren und Verwenden des neuen Tools finden Sie unter Git-Benutzeroberfläche in Visual Studio (Vorschau).

  1. Sie werden über die Mergekonflikte informiert, wenn Sie Änderungen per Pull abrufen oder versuchen, zwei Verzweigungen zusammenzuführen.

  2. Die Konflikt Benachrichtigung wird angezeigt. Klicken Sie auf den Link Konflikte , um die Auflösung von Dateikonflikten zu starten

    Beim Abrufen einer Änderung eine Eingabeaufforderung beim Ausführen eines Mergekonflikts

  3. Dadurch wird eine Liste der Dateien mit Konflikten angezeigt. Wenn Sie eine Datei auswählen, können Sie die Änderungen in der Quellverzweigung, die Sie zusammenführen, mit der Schaltfläche Quelle annehmen akzeptieren oder die Änderungen in der Verzweigung, mit der Sie zusammengeführt werden, mithilfe der Option Ziel Sie können Änderungen manuell zusammenführen, indem Sie Merge auswählen und die Änderungen direkt in das in den git- Einstellungenangegebene Merge-Tool eingeben.

  4. Verwenden Sie die Kontrollkästchen neben den geänderten Zeilen, um zwischen Remote-und lokalen Änderungen vollständig auszuwählen, oder bearbeiten Sie die Ergebnisse direkt im Ergebnis -Editor unter dem Quell -und Ziel -Editor in der Vergleichs Ansicht.

  5. Wenn Sie die Änderungen vorgenommen haben, klicken Sie auf Merge akzeptieren . Wiederholen Sie diesen Vorgang für alle in Konflikt stehenden Dateien.

  6. Öffnen Sie in Team Explorer die Ansicht Änderungen , und führen Sie die Änderungen aus, um den mergecommit zu erstellen und den Konflikt aufzulösen.

    Auflösen von Mergekonflikten in Visual Studio

    Vergleichen Sie die Konflikt verursachenden Commits sowie die Unterschiede zwischen dem allgemeinen Verlauf und den Optionen im Merge-Tool von Visual Studio.

    Vsmergetool-Vergleichs Optionen

Nächste Schritte