Rollback-Befehl (Team Foundation-Versionskontrolle)

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

Visual Studio 2019 | Visual Studio 2022

Sie können den tf rollback-Befehl der Team Foundation-Versionskontrolle (TFVC) verwenden, um einen Rollback für die Auswirkungen eines oder mehrerer Changesets auf ein oder mehrere Elemente mit Versionskontrolle auszuführen. Mit diesem Befehl werden die Changesets nicht aus dem Versionsverlauf eines Elements entfernt. Stattdessen erstellt dieser Befehl eine Reihe ausstehender Änderungen in Ihrem Arbeitsbereich, die die Auswirkungen der von Ihnen angegebenen Changesets aufheben.

Voraussetzungen

Um diesen Befehl verwenden zu können, müssen Sie die Berechtigungen Lesen, Auschecken und Einchecken auf Zulassen festgelegt haben. Weitere Informationen finden Sie unter TFVC-Standardberechtigungen.

Syntax

tf rollback /toversion:VersionSpec ItemSpec [/recursive] [/lock:none|checkin|checkout] [/version:versionspec] [/keepmergehistory] [/login:username,[password]] [/noprompt]
tf rollback /changeset:ChangesetFrom~ChangesetTo [ItemSpec] [/recursive] [/lock:none|checkin|checkout] [/version:VersionSpec]
[/keepmergehistory] [/noprompt] [/login:username,[password]]

Parameter

Argumente

Argument

Beschreibung

<ChangesetFrom>~<ChangesetTo>

Verwenden Sie dieses Argument zusammen mit der Option /changeset, um die Changesets anzugeben, für die Sie einen Rollback ausführen möchten. Sie können die Changesets auf folgende Weise angeben:

  • Ein einzelnes Changeset, z. B. /changeset:C11
  • Ein Bereich von Changesets, z. B. /changeset:C7~C20
  • Ein Datum, z. B. /changeset:D09/30/09
  • Ein Datumsbereich, z. B. /changeset:D09/23/09~D10/07/09
  • Das neueste Changeset, /changeset:Tip oder /changeset:T

<ItemSpec>

Verwenden Sie dieses Argument, um ein oder mehrere Elemente anzugeben, für die Sie einen Rollback ausführen möchten. Wenn Sie die /toversion-Option verwenden, müssen Sie dieses Argument angeben.

Weitere Informationen darüber, wie TFVC Elementspezifikationen analysiert, finden Sie unter Verwenden von Befehlen der Team Foundation-Versionskontrolle.

Hinweis

Sie können mehrere itemspec-Argumente angeben.

<VersionSpec>

Der vom Benutzer bereitgestellte Wert für die Option /version und die Option /toversion.

Verwenden Sie dieses Argument mit der Option /toversion, um eine Datei in den Zustand in einem bestimmten Changeset wiederherzustellen. Sie können die Version auf folgende Weise angeben:

  • Ein einzelnes Changeset, z. B. /toversion:C32
  • Ein Datum um Mitternacht, z. B. /toversion:D06/19/09
  • Ein Datum und eine Uhrzeit, z. B. /toversion:D06/19/09T14:32
  • Eine Bezeichnung, z. B. /toversion:LTestLabel
  • Die Version im Arbeitsbereich, die dem aktuellen Verzeichnis zugeordnet ist, /toversion:W
  • Die Version in einem bestimmten Arbeitsbereich, z. B. /toversion:WResolveRIConflicts;AKerry

Weitere Informationen darüber, wie TFVC die versionspec analysiert, finden Sie unter Verwenden von Befehlen der Team Foundation-Versionskontrolle.

Tastatur

Option

Beschreibung

/changeset

Verwenden Sie diese Option, um ein oder mehrere bestimmte Changesets anzugeben, die Sie aufheben möchten.

/keepmergehistory

Diese Option wirkt sich nur aus, wenn eines oder mehrere der Changesets, für die Sie einen Rollback ausführen, eine Branch- oder Merge-Änderung enthalten. Geben Sie diese Option an, wenn Sie möchten, dass zukünftige Mergevorgänge zwischen derselben Quelle und demselben Ziel die Änderungen, für die Sie einen Rollback ausführen, ausschließen.

/lock

Geben Sie diese Option an, um zu verhindern, dass andere Benutzer Elemente ein- oder auschecken, bis Sie für alle zugeordneten Änderungen den Rollback abgeschlossen haben. Weitere Informationen finden Sie unter Grundlegendes zu Sperrtypen.

Sperroptionen:

  • None. Standard. Es wird keine Sperre angewendet. Wenn die Datei, für die Sie einen Rollback ausführen, gesperrt wurde, können Sie mit dieser Option die Sperre entfernen.
  • Checkin. Sperrt ein Element, bis Sie die Sperre durch Einchecken aufheben. Andere Benutzer können das angegebene Element auschecken, aber die Benutzer können keine Revisionen einchecken, bis die Sperre entfernt ist. Sie können eine Datei, die bereits gesperrt ist, nicht sperren.
  • Checkout. Verhindert, dass Benutzer ein gesperrtes Element ein- oder auschecken können, bis Sie die Sperre durch Einchecken entfernen.

/login

Informationen zu dieser Option finden Sie unter Verwenden von Optionen zum Ändern der Funktionsweise eines Befehls.

/noprompt

Verwenden Sie diese Option, um alle Dialogfelder zu unterdrücken, die sonst während dieses Vorgangs angezeigt würden.

/recursive

Geben Sie diese Option an, wenn der Vorgang Elemente in Unterordnern berücksichtigen soll.

/toversion

Geben Sie diese Option an, um eine Datei in dem Zustand vor einem bestimmten Changeset wiederherzustellen. Wenn Sie diese Option verwenden, heben Sie die Wirkung aller Changesets auf, die seit der von Ihnen angegebenen Version vorgenommen wurden.

/version

Gibt die aktuelle Version der Dateien und Ordner an, für die Sie einen Rollback ausführen möchten.

Bemerkungen

Der Befehl tf rollback hebt die Wirkung jedes von Ihnen angegebenen Changesets für jedes von Ihnen angegebene Element auf. In der folgenden Tabelle ist aufgeführt, wie der Vorgang jede Art von Änderung aufhebt.

Art der zurückgesetzten Änderung Art der Rollbackänderung
add, branch oder undelete delete
edit edit
encoding encoding
rename/move rename/move
delete undelete
merge Änderung, die alle Änderungen, die im aktuellen Branch zusammengeführt wurden, aufhebt.

Die folgende Liste enthält einige Beispiele für Änderungen, die sich durch den Befehl rollback ergeben:

  • Sie führen einen Rollback für ein Changeset aus, in dem eine Add-Änderung aufgetreten ist. Der Rollbackvorgang bewirkt eine Rollback-Änderung und eine Delete-Änderung.

  • Sie führen ein Rollback für Changeset 521 aus, in dem eine Edit-Änderung aufgetreten ist. Der Rollbackvorgang verursacht eine Rollback- und eine Edit-Änderung, die die Edit-Änderung in Changeset 521 aufhebt.

  • In Changeset 132 haben Sie einen Mergevorgang von $/BranchA/File1.txt zu $/BranchB/File1.txt durchgeführt. Die Änderungen in diesem Mergevorgang umfassten Edit-Änderungen in den Changesets 92 und 104. In Changeset 162 führen Sie einen Rollback für das Changeset 132 aus, was zu einer Rollback- und einer Edit-Änderung an $/BranchB/File1.txt führt, die die Edit-Änderungen in den Changesets 92 und 104 aufhebt.

Exitcodes

Nachdem Sie den tf rollback-Befehl ausgeführt haben, wird ein Exitcode aus der folgenden Tabelle angezeigt.

Exitcode BESCHREIBUNG
0 Der Vorgang hat für alle Elemente erfolgreich einen Rollback ausgeführt.
1 Der Vorgang hat mindestens für ein Element erfolgreich den Rollback ausgeführt, aber für ein oder mehrere Elemente konnte kein Rollback ausgeführt werden.
100 Der Vorgang konnte für keine Elemente einen Rollback ausführen.

Beispiele

Im folgenden Beispiel wird die Auswirkung von Changeset 23 auf alle Elemente, die in diesem Changeset geändert wurden, aufgehoben:

c:\workspace> tf rollback /changeset:C23

Im folgenden Beispiel wird die Auswirkung von Changeset 23 auf die Datei a.txt aufgehoben:

c:\workspace> tf rollback /changeset:C23 a.txt

Im folgenden Beispiel wird der Inhalt von a.txt so geändert, dass er mit der Version übereinstimmt, die mit Changeset 23 eingecheckt wurde:

c:\workspace> tf rollback /toversion:C23 a.txt

Im folgenden Beispiel wird der Inhalt von OurTeamProject so geändert, dass er mit dem letzten Changeset übereinstimmt, das am 31. August 2009 um oder vor Mitternacht angewendet wurde:

c:\workspace> tf rollback /toversion:D08/31/2009 /recursive $/OurTeamProject/

Beispiel für die /keepmergehistory-Option

Wenn Sie einen Rollback für ein Changeset ausführen, das einen Branch oder eine Mergeänderung enthält, möchten Sie in der Regel, dass zukünftige Mergevorgänge zwischen derselben Quelle und demselben Ziel diese Änderungen einschließen. Sie können jedoch die /keepmergehistory-Option verwenden, wenn Sie möchten, dass zukünftige Mergevorgänge zwischen derselben Quelle und demselben Ziel Changesets ausschließen, die in einem früheren Mergevorgang eingeschlossen wurden. Beispiel:

  1. Am 30. Juni 2009 führen Sie einen vollständigen Mergevorgang aller Elemente von $/BranchA/ zu $/BranchB/ durch.

    c:\workspace> tf merge $/BranchA $/BranchB
    

    Sie checken diesen Mergevorgang als Teil von Changeset 292 ein.

  2. Im Juli nehmen Sie mehrere Änderungen an $/BranchA/Util.cs vor. Diese Änderungen sind in den Changesets 297, 301 und 305 enthalten.

  3. Am 1. August 2009 führen Sie $/BranchA/Util.cs mit $/BranchB/Util.cs zusammen.

    c:\workspace> tf merge $/BranchA/Util.cs $/BranchB/Util.cs
    

    Sie checken die Änderung als Teil von Changeset 314 ein. Das Ergebnis dieses Vorgangs ist, dass die in den Changesets 297, 301 und 305 an $/BranchA/Util.cs vorgenommenen Änderungen jetzt auch auf $/BranchB/Util.cs angewendet werden.

  4. Eine Woche später stellen Sie fest, dass die Änderungen, die Sie im Juli an $/BranchA/Util.cs vorgenommen haben, nicht für $/BranchB/Util.cs geeignet sind. Sie können den rollback-Befehl verwenden, um diese Änderungen aufzuheben. Wenn Sie den Befehl rollback verwenden, um einen Rollback für eine Merge- oder Branch-Änderung auszuführen, müssen Sie eine Entscheidung treffen.

    • Wenn Sie möchten, dass die Änderungen, die Sie im Juli an $/BranchA/Util.cs vorgenommen haben, bei zukünftigen Mergevorgängen wieder auf $/BranchB/Util.cs angewendet werden, geben Sie den folgenden Befehl ein:

      c:\workspace> tf rollback /changeset:314
      
    • Wenn Sie möchten, dass die Änderungen, die Sie im Juli an $/BranchA/Util.cs vorgenommen haben, bei zukünftigen Mergevorgängen nie wieder auf $/BranchB/Util.cs angewendet werden, geben Sie folgenden Befehl ein:

      c:\workspace> tf rollback /changeset:314 /keepmergehistory
      
  5. Ein paar Wochen später führen Sie $/BranchA/ in $/BranchB/ zusammen.

    c:\workspace> tf merge $/BranchA $/BranchB
    
    • Wenn Sie beim Rollback die /keepmergehistory-Option ausgelassen haben, wendet die Merge-Änderung alle Changesets auf $/BranchB/Util.cs an, die seit Changeset 292 auf $/BranchA/Util.cs angewendet wurden, einschließlich der Changesets 297, 301 und 305. Mit anderen Worten: Der Mergevorgang macht die Rollbackänderung rückgängig.

    • Wenn Sie beim Rollback die Option /keepmergehistory angegeben haben, wendet der Mergevorgang alle Changesets auf $/BranchB/Util.cs an, die seit Changeset 292 auf $/BranchA/Util.cs angewendet wurden, mit Ausnahme der Changesets 297, 301 und 305. Mit anderen Worten: Der Mergevorgang macht die Rollbackänderung nicht rückgängig. Daher stimmt der Inhalt von BranchA möglicherweise nicht mit dem Inhalt von BranchB überein.