Konfliktlösung

Wenn sowohl im Arbeitsbereich als auch im Git-Remoterepository Änderungen am selben Element vorgenommen werden, tritt ein Konflikt auf. Wenn ein Konflikt auftritt, lautet der Git-Status Konflikt, und der Befehl Commit ist deaktiviert.

Screenshot: Bericht mit dem Git-Status „Konflikt“.

Wenn Sie bei Konflikten Update auswählen, werden Sie in einer Meldung darüber informiert, dass Sie die Konflikte beheben müssen, bevor Sie ein Update ausführen können.

Screenshot einer Fehlermeldung auf der Registerkarte „Quellcodeverwaltung“, die über Konflikte informiert.

Es gibt drei Möglichkeiten, einen Konflikt zu beheben:

Beheben eines Konflikts in der Benutzeroberfläche

Wählen Sie Alle aktualisieren aus, um eine Liste aller konfliktbehafteten Elemente anzuzeigen. Sie können dann auswählen, welche Version für jedes Element beibehalten werden soll. Für jedes konfliktbehaftete Element können Sie die eingehenden Änderungen aus dem Git-Repository akzeptieren oder die aktuelle Version im Arbeitsbereich beibehalten.

Screenshot der Benutzeroberfläche zum Auswählen der Version eines konfliktbehafteten Elements, die beibehalten werden soll.

  • Wählen Sie Eingehende Änderungen annehmen aus, um die Änderungen im Arbeitsbereich zu überschreiben. Die Änderungen im Arbeitsbereich gehen verloren, und der Git-Status wechselt zu Synchronisiert, wenn der Import erfolgreich ist.

Hinweis

Durch das Annehmen eingehender Änderungen wird das aktuelle Element im Arbeitsbereich außer Kraft gesetzt.

  • Wählen Sie Aktuellen Inhalt beibehalten aus, um die aktuelle Version im Arbeitsbereich beizubehalten. Nach Abschluss des Updates ändert sich der Git-Status zu nicht übertragene Änderungen, da die Arbeitsbereichsänderungen noch nicht in den Branch übertragen wurden.

Zurückkehren zu einem vorherigen Zustand

Sie können entweder den gesamten Arbeitsbereich oder den Git-Branch auf den letzten synchronisierten Zustand zurücksetzen. Wenn Sie den Git-Branch auf einen vorherigen Commit zurücksetzen, können Sie noch die Änderungen sehen, die am nicht synchronisierten Branch vorgenommen wurden. Wenn Sie den Arbeitsbereich zurücksetzen, gehen alle Änderungen, die seit dem letzten Commit am Arbeitsbereich vorgenommen wurden, verloren.

Führen Sie eine der folgenden Aktionen aus, um zum zuvor synchronisierten Zustand zurückzukehren:

  • Verwenden Sie den Befehl Rückgängig machen, um alle konfliktbehafteten Elemente im Arbeitsbereich auf ihren zuletzt synchronisierten Zustand zurückzusetzen.
  • Verwenden Sie den Befehl git revert in Azure DevOps, um zum letzten synchronisierten Zustand in Git zurückzukehren.

Sie können Konflikte auch beheben, indem Sie den Arbeitsbereich trennen und erneut verbinden. Wenn Sie die Verbindung erneut herstellen, wählen Sie die Richtung aus, in die Sie synchronisieren möchten. Beachten Sie jedoch, dass durch die erneute Verbindungswiederherstellung alle Elemente im Arbeitsbereich oder Branch und nicht nur die konfliktbehafteten Elemente überschrieben werden. Der Arbeitsbereich oder der Branch wird nicht auf den zuletzt synchronisierten Zustand zurückgesetzt. Stattdessen wird der gesamte Inhalt an einem Speicherort mit dem Inhalt des anderen Speicherorts überschrieben.

Beheben eines Konflikts in Git

Wenn Sie sich über die vorgenommenen Änderungen und die Auswahl der Version nicht sicher sind und nicht zu einem vorherigen Zustand zurückkehren möchten, können Sie versuchen, den Konflikt im Git-Repository zu beheben, indem Sie einen neuen Branch erstellen, den Konflikt dort beheben und ihn mit dem aktuellen Branch synchronisieren.

Hinweis

Nur ein Arbeitsbereichsadministrator kann den Arbeitsbereich erneut mit dem neuen Branch verbinden.

  1. Überprüfen Sie im Quellcodeverwaltungspanel einen neuen Branch, nutzen Sie die ID des zuletzt synchronisierten Branches, die am unteren Rand des Bildschirms angezeigt wird.

    Screenshot: Wechseln zu einem neuen Zweig im Bereich „Quellcodeverwaltung“, indem Sie den Abwärtspfeil auswählen.

    Screenshot: Informationen zur Branch-ID am unteren Bildschirmrand

    In diesem Schritt wird ein neuer Branch aus dem konfliktbehafteten Branch erstellt, wobei der letzte synchronisierte Git-Status verwendet wird, bevor Änderungen vorgenommen wurden, die mit Ihren Änderungen in Konflikt stehen. Sie können Ihre Änderungen im Bereich Quellcodeverwaltung anzeigen, aber es gibt nichts, das vom Git-Branch aktualisiert werden muss. Der Checkout-Branch hält den aktuellen Zustand des Arbeitsbereichs aufrecht, sodass nicht festgeschriebene Änderungen beim Wechseln des Branchs beibehalten werden.

  2. Übertragen Sie Ihre Änderungen in den neuen Zweig. Dieser neue Branch enthält jetzt die Änderungen, die Sie an den Elementen vorgenommen haben, die mit einer früheren Version des Git-Branchs verbunden waren, der keinen Konflikt mit Ihren Änderungen verursacht hat.

  3. Lösen Sie in Git die Konflikte zwischen dem ursprünglichen Branch und dem neuen Branch.

  4. Führen Sie in Git den neuen Branch mit dem ursprünglichen Branch zusammen.

  5. In Fabric wechseln Sie den Arbeitsbereich zurück zum ursprünglichen Branch.