Lösen von Konflikten der Team Foundation-Versionskontrolle

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Ein Vorteil der Verwendung von Team Foundation-Versionskontrolle (TFVC) zur Verwaltung von 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 Resolve-Befehl 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 Fenster Konflikte lösen von Visual Studio verwenden, um Konflikte zu lösen, die Sie blockieren. Um das Fenster zu öffnen, wählen Sie Aktionen>Konflikt lösen auf der Seite Ausstehende Änderungen von Team Explorer aus.

Screenshot: Fenster „Konflikte lösen“ zum Lösen von Konflikten.

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

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

Screenshot: Fenster „Konflikte lösen“.

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 dann eine der folgenden Optionen auswählen:

  • Symbol „Verlauf“.Verlauf zum Anzeigen der Versionsgeschichte der Datei. Wenn der Vorgang, der den Konflikt verursacht hat, ein Merge oder ein Rollback ist, können Sie das Menüsteuerelement rechts von Verlauf und dann Quellverlauf oder Zielverlauf auswählen. Weitere Informationen finden Sie unter Abrufen des Verlaufs eines Elements.

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

  • Symbol „Anmerkungen“.Mit Anmerkungen versehen, um Details zu allen Änderungen anzuzeigen, die an der letzten Version der Datei vorgenommen wurden, einschließlich des Bearbeiters und des Zeitpunkts der Änderung. 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 aufzulösen, sofern Sie diese Option nicht deaktiviert haben. Wenn Sie die Option Alle automatisch 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 aus.

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 seiner gesamten Heuristik zu lösen.

  • Bestimmte Konflikttypen, wenn das System versuchen soll, die Konflikte zu lösen, Sie aber einen Teil der Heuristik ausschließen möchten.

    Das Dialogfeld Zu lösende Konflikte auswählen wird angezeigt. Aktivieren oder deaktivieren Sie die gewünschten Optionen, und wählen Sie dann Automatisch auflösen aus.

    Das System versucht, die im Fenster Ausstehende Änderungen angezeigten Konflikte 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 mit der Option Alle automatisch auflösen die Arten von Konflikten einschränken, die automatisch aufgelöst werden. Wenn Sie Alle automatisch auflösen und dann Bestimmte Konflikttypen auswählen, wird das Dialogfeld Zu lösende Konflikte auswählen angezeigt.

Screenshot: Dialogfeld „Zu lösende Konflikte auswählen“.

Ursache des Konflikts

Beispiel

Auswahl des Kontrollkästchens


Nicht in Konflikt stehende Inhaltsänderungen wurden in jeder Version einer Datei vorgenommen.

In der Dateiversion links wurde am Anfang eine 0 (null) hinzugefügt. In der Datei rechts wurde am Ende eine 3 (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: Eindeutige Inhaltsänderungen für Arbeitsbereich oder Ziel.

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

Inhaltsänderungen wurden während eines Get- oder Check-In-Vorgangs vorgenommen, die nur für den Server gelten, oder während eines Merge- oder Rollbackvorgangs, die nur für die Quellversion gelten.

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

Screenshot: Eindeutige Inhaltsänderungen für Server oder Quelle.

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

Eine Datei auf dem Server wurde (während des Abrufens oder Eincheckens) oder in der Quellverzweigung (während des Merge oder des Rollbacks) umbenannt.

Sie haben eine Datei mit dem Namen launch.cs ausgecheckt und bearbeitet. Während dieses Zeitraums hat eine andere Person ein Changeset eingecheckt, das sich auf diese Datei ausgewirkt hat. Das Changeset hat den Inhalt der Datei nicht geändert, die Datei jedoch in start.cs umbenannt.

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

Es wurden allgemeine Inhaltsänderungen vorgenommen, die in allen Versionen zu identischem Inhalt geführt haben. Oder Sie haben eine Datei geändert, diese über den abgegrenzten Check-In-Build eingecheckt und die Option Ausstehende Änderungen lokal beibehalten aktiviert.

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

Screenshot: Identische Inhaltsänderungen in beiden Versionen.

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

Diese Option dient auch zum Lösen von Konflikten, die durch alle anderen Vorgängen verursacht wurden (z. B. Umbenennung, Löschung, Aufheben von Löschungen und Branchen), die zu identischen Dateien führen.

Tipp

Wenn Sie beim Fortfahren dieses Kontrollkästchen aktivieren, löst das System diese Änderungen auf, indem es die Serverversion in den Arbeitsbereich herunterlädt.

Automatisches Mergen ausgewählter Konflikte

Wenn Sie versuchen möchten, ausgewählte Konflikte mithilfe aller oben genannten Optionen für automatisches Mergen zu lösen, wählen Sie mindestens einen Konflikt aus, und wählen Sie dann Automatisches Mergen aus.

Tipp

Sie können die STRG- oder die UMSCHALTTASTE gedrückt halten, um mehrere Konflikte auszuwählen.

Hinweis

Wenn Automatisches Mergen deaktiviert ist, müssen Sie die Konflikte manuell auflösen.

Manuelles Auflösen ausgewählter Konflikte

Wenn das System einen Konflikt nicht automatisch lösen kann, oder wenn Sie sicherstellen möchten, dass Sie die Änderungen verstehen, müssen Sie den Konflikt manuell auflö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 vom Vorgang ab, der den Konflikt verursacht hat.

Verwenden des Mergefensters

Wenn ein Konflikt durch widersprüchliche Inhaltsänderungen verursacht wird, können Sie Änderungen im Mergetool mergen auswählen. Das Fenster Zusammenführen wird geöffnet.

Screenshot: Mergen von Änderungen im Mergetool.

Im Fenster Mergen haben Sie folgende Möglichkeiten:

  • Auswählen des Layouts des Fensters: Vertikale Anzeige, Horizontale Anzeige oder Gemischte Anzeige.
  • Navigieren Sie in den Unterschieden und Konflikten.
  • Auswählen von Elementen aus der linken und rechten Version der Datei, um diese in den Ergebnissen zu berücksichtigen.
  • Eingeben zusätzlicher Inhalte in die Datei im Ergebnisbereich.
  • Anzeigen des Verlaufs der Datei. Weitere Informationen finden Sie unter Abrufen des Verlaufs eines Elements.
  • Vergleichen der verschiedenen 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 im Ergebnisbereich zufrieden sind, wählen Sie Merge akzeptieren aus.

Das Ergebnis der Konfliktlösung wird im Ergebnisbereich angezeigt.