Lösen von Konflikten der Team Foundation-Versionskontrolle

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019 | TFS 2018

Visual Studio 2019 | Visual Studio 2022

Ein Vorteil der Verwendung von Team Foundation-Versionskontrolle (TFVC) zum Verwalten Ihrer Dateien besteht darin, dass mehrere Personen gleichzeitig an einer Datei arbeiten können. Ein Nachteil ist, dass Sie manchmal Konflikte auflösen müssen, bevor Sie Ihre Dateien abrufen, einchecken, unshelven, zusammenführen oder für sie einen Rollback vornehmen können.

Es kann ärgerlich sein, auf Konflikte zu stoßen. Daher stellt das System Informationen und Tools bereit, die Ihnen dabei helfen, Konflikte zu verstehen und zu beheben.

Sie können Konflikte auch über die Befehlszeile lösen, indem Sie den Befehl Auflösen verwenden.

Tipp

Wenn Ihr Team zusammenarbeiten muss, um eine große Anzahl von Konflikten zu lösen, z. B. nach einem Mergevorgang in einer großen Codebasis, kann ein öffentlicher Arbeitsbereich auf einem freigegebenen Entwicklungscomputer hilfreich sein. Weitere Informationen finden Sie unter Erstellen von und Arbeiten mit Arbeitsbereichen.

Auflösen von Konflikten

Sie können das Visual Studio-Fenster Konflikte auflösen verwenden, um Konflikte zu lösen, die Sie blockieren. Um das Fenster zu öffnen, wählen Sie Aktionen>Konflikt auflösen auf der Seite Ausstehende Änderungen von Team Explorer aus.

Screenshot: Verwenden des Fensters

Standardmäßig werden im Fenster nur die vom zuletzt ausgeführten Vorgang verursachten Konflikte angezeigt. Wenn sich das Fenster in diesem Zustand befindet, wird eine Meldung angezeigt, die beginnt: Pfadfilter angewendet. Um alle Konflikte in Ihrem Arbeitsbereich anzuzeigen, wählen Sie Alle Konflikte abrufen aus. Eine Meldung, die mit beginnt: <N> Konflikt(en) wird angezeigt.

Wenn seit der letzten Änderung an den Dateien bereits viel Zeit vergangen ist, sind möglicherweise neue Konflikte aufgetreten. Um das Fenster Konflikte auflösen zu aktualisieren, wählen Sie Aktualisieren aus.

Screenshot: Fenster

Jeder Konflikt enthält Informationen und manchmal Links, mit deren Hilfe Sie den Konflikt möglichweise beheben können. Um weitere Informationen zu erhalten, können Sie den Konflikt auswählen und eine der folgenden Optionen auswählen:

  • Verlaufssymbol.Verlauf , um den Verlauf der Datei anzuzeigen. Wenn der Vorgang, der den Konflikt verursacht hat, eine Zusammenführung oder ein Rollback ist, können Sie das Menüsteuerelement rechts neben Verlauf auswählen und dann entweder Quellverlauf oder Zielverlauf auswählen. Weitere Informationen finden Sie unter Abrufen des Verlaufs eines Elements.

  • Symbol Vergleichen Sie, oder wählen Sie den Dropdownpfeil neben dem Symbol aus, und wählen Sie dann einen Befehl aus. Das Fenster Diff wird geöffnet.

  • Symbol zum Kommentieren.Kommentieren Sie, um Details zu allen Änderungen anzuzeigen, die an der neuesten Version der Datei vorgenommen wurden, einschließlich der Personen, die die einzelnen Änderungen vorgenommen haben und wann sie vorgenommen wurden. Weitere Informationen finden Sie unter Anzeigen von Dateiänderungen mithilfe von Anmerkungen.

Automatisches Auflösen aller Konflikte

Standardmäßig versucht das System automatisch, Alle Konflikte automatisch zu lösen , es sei denn, Sie deaktivieren diese Option. Wenn Sie die automatische Automatische Auflösung aller Auflösen deaktivieren möchten, wählen Sie Extras>Optionen aus. Deaktivieren Sie im Dialogfeld Optionen unter Quellcodeverwaltung>Visual Studio Team Foundation Server die Option Versuchen, Konflikte automatisch zu lösen, wenn sie generiert werden.

Sie können auch im Fenster Konflikte beheben die Option Alle automatisch auflösen auswählen und dann eine der folgenden Optionen auswählen:

  • Alle Konflikttypen , wenn das System versuchen soll, die Konflikte automatisch mithilfe aller Heuristiken zu lösen.

  • Bestimmte Konflikttypen , wenn das System versuchen soll, die Konflikte zu lösen, sie aber einige Heuristiken ausschließen möchten.

    Das Dialogfeld Zu lösende Konflikte auswählen wird angezeigt. Aktivieren oder deaktivieren Sie die Optionen, die Sie aktivieren oder deaktivieren möchten, und wählen Sie dann AutoResolve aus.

    Das System versucht, die Konflikte, die im Fenster Ausstehende Änderungen angezeigt werden, automatisch zu lösen. Alle Konflikte, die das System nicht lösen kann, verbleiben im Fenster. Sie müssen diese Konflikte manuell lösen .

Grundlegendes zu den automatischen Optionen

Sie können die Arten von Konflikten einschränken, die mit der Option AutoResolve All automatisch aufgelöst werden. Wenn Sie Alle automatisch auflösen und dann Bestimmte Konflikttypen auswählen, wird das Dialogfeld Konflikte auswählen angezeigt, die gelöst werden sollen .

Screenshot: Dialogfeld

Ursache des Konflikts

Beispiel

Auswahl des Kontrollkästchens


In jeder Version einer Datei wurden keine in Konflikt stehenden Inhaltsänderungen vorgenommen.

In der Dateiversion auf der linken Seite wurde am Anfang eine Null hinzugefügt. In der Datei auf der rechten Seite wurde am Ende eine drei hinzugefügt:

Screenshot: Nicht in Konflikt stehende Inhaltsänderungen.

Konflikte mit beliebigen Inhaltsänderungen

Inhaltsänderungen wurden während eines Get- oder Check-in-Vorgangs vorgenommen, die für den Arbeitsbereich eindeutig sind, oder während eines Merge- oder Rollbackvorgangs, der für die Zielversion eindeutig ist.

Die Einträge vier und fünf wurden dem Arbeitsbereich oder der Zielversion hinzugefügt:

Screenshot: Inhaltsänderungen, die für den Arbeitsbereich oder das Ziel eindeutig sind

Konflikte mit Inhaltsänderungen, die nur im lokalen Arbeitsbereich oder im Zielbranch vorgenommen wurden

Inhaltsänderungen wurden während des Get- oder Check-in-Vorgangs vorgenommen, die für den Server eindeutig sind, oder während eines Merge- oder Rollbackvorgangs, der für die Quellversion eindeutig ist.

Die Einträge vier und fünf wurden dem Server oder der Quellversion hinzugefügt:

Screenshot der Inhaltsänderungen, die für den Server oder die Quelle eindeutig sind.

Konflikte mit Inhaltsänderungen, die nur in der Serverversion oder dem Quellbranch vorgenommen wurden

Eine Datei wurde auf dem Server während eines Get- oder Checkin-Vorgangs oder im Quellbranch während eines Merge- oder Rollbackvorgangs umbenannt.

Sie haben eine Datei mit dem Namen launch.cs ausgecheckt und daran gearbeitet. Während dieses Zeitraums hat eine andere Person ein Changeset eingecheckt, das sich auf diese Datei ausgewirkt hat. Dieses Changeset hat den Inhalt der Datei nicht geändert, aber der Name der Datei wurde in start.cs geändert.

Konflikte aufgrund der Umbenennung der Datei in der Serverversion oder der Quellverzweigung

Es wurden allgemeine Inhaltsänderungen vorgenommen, die zu identischen Inhalten in jeder Version geführt haben. Oder Sie haben eine Datei geändert, sie über einen gated Check-In-Build eingecheckt und die Option Meine ausstehenden Änderungen lokal beibehalten ausgewählt.

Änderungen an jeder Version führten zu identischem Dateiinhalt. Die Änderungen können den Inhalt der Dateien betreffen, wie im folgenden Beispiel gezeigt:

Screenshot, der identische Inhaltsänderungen in beiden Versionen zeigt.

Konflikte, die durch identische Änderungen auf dem Server und im Arbeitsbereich verursacht werden

Diese Option löst auch Konflikte, die durch alle anderen Vorgänge verursacht werden, z. B. Umbenennen, Löschen, Wiederherstellen und Verzweigung, die zu identischen Dateien führen.

Tipp

Wenn Sie dieses Kontrollkästchen aktivieren, löst das System diese Änderungen auf, indem die Serverversion in Ihren Arbeitsbereich heruntergeladen wird.

Ausgewählte Konflikte automatisch löschen

Wenn Sie versuchen möchten, ausgewählte Konflikte mithilfe aller oben genannten Automerge-Optionen zu lösen, wählen Sie einen oder mehrere Konflikte aus, und wählen Sie dann AutoMerge aus.

Tipp

Sie können die STRG- oder UMSCHALTTASTE drücken und halten, um mehrere Konflikte auszuwählen.

Hinweis

Wenn AutoMerge deaktiviert ist, müssen Sie die Konflikte manuell beheben .

Manuelles Beheben ausgewählter Konflikte

Wenn das System einen Konflikt nicht automatisch lösen kann oder Sie sicherstellen möchten, dass Sie verstehen, was sich ändert, müssen Sie den Konflikt manuell lösen. In den ausgewählten Konflikten zeigt das System die Aktionen an, die Sie ausführen können, um den Konflikt zu lösen. Die angezeigten Aktionen hängen vom Konflikttyp und dem Vorgang ab, der den Konflikt verursacht hat.

Verwenden des Fensters "Zusammenführen"

Wenn in Konflikt stehende Inhaltsänderungen zu einem Konflikt führen, können Sie im Mergetool die Option Änderungen zusammenführen auswählen. Das Fenster Zusammenführen wird geöffnet.

Screenshot: Zusammenführen von Änderungen im Mergetool

Im Fenster "Zusammenführen " haben Sie folgende Möglichkeiten:

  • Wählen Sie das Layout des Fensters aus: Vertikale Ansicht, Horizontale Ansicht oder Gemischte Ansicht.
  • Navigieren Sie in den Unterschieden und Konflikten.
  • Wählen Sie Elemente aus der linken und rechten Version der Datei aus, um sie in die Ergebnisse einzuschließen.
  • Geben Sie im Ergebnisbereich weitere Inhalte in die Datei ein.
  • Zeigen Sie den Verlauf der Datei an. Weitere Informationen finden Sie unter Abrufen des Verlaufs eines Elements.
  • Vergleichen Sie die Versionen der Datei.
  • Kommentieren Sie die Datei, um anzuzeigen, wer welche Änderung vorgenommen hat. Weitere Informationen finden Sie unter Anzeigen von Dateiänderungen mithilfe von Anmerkungen.

Wenn Sie mit dem Inhalt des Ergebnisbereichs zufrieden sind, wählen Sie Zusammenführung akzeptieren aus.

Das Ergebnis der Konfliktlösung wird im Ergebnisbereich angezeigt.