Dela via


Återställningskommando (Versionskontroll för Team Foundation)

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

Visual Studio 2019 | Visual Studio 2022

Du kan använda kommandot Team Foundation Version Control (TFVC) tf rollback för att återställa effekterna av en eller flera ändringsuppsättningar på ett eller flera versionskontrollerade objekt. Det här kommandot tar inte bort ändringsuppsättningarna från ett objekts versionshistorik. I stället skapar det här kommandot en uppsättning väntande ändringar på din arbetsyta som tar bort effekterna av de ändringsuppsättningar som du anger.

Förutsättningar

Om du vill använda det här kommandot måste behörigheterna Läs, Checka ut och Incheckning anges till Tillåt. Mer information finns i TFVC-standardbehörigheter.

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]]

Parametrar

Argument

Argument

Beskrivning

<ChangesetFrom>~<ChangesetTo>

Använd det här argumentet med /changeset alternativet för att ange de ändringsuppsättningar som du vill återställa. Du kan ange ändringsuppsättningarna på följande sätt:

  • En enskild ändringsuppsättning, till exempel /changeset:C11
  • Ett antal ändringsuppsättningar, till exempel /changeset:C7~C20
  • Ett datum, till exempel /changeset:D09/30/09
  • Ett datumintervall, till exempel /changeset:D09/23/09~D10/07/09
  • Den senaste ändringsuppsättningen, /changeset:Tip eller /changeset:T

<ItemSpec>

Använd det här argumentet om du vill ange ett eller flera objekt som du vill återställa. Om du använder alternativet /toversion måste du ange det här argumentet.

Mer information om hur TFVC parsar objektspecifikationer finns i Använda Team Foundation-versionskontrollkommandon.

Kommentar

Du kan ange mer än ett itemspec argument.

<VersionSpec>

Det användardefinierade värdet för både /version alternativet och alternativet /toversion .

Använd det här argumentet med /toversion alternativet för att återställa en fil till dess tillstånd i en specifik ändringsuppsättning. Du kan ange versionen på följande sätt:

  • En enskild ändringsuppsättning, till exempel /toversion:C32
  • Ett datum vid midnatt, till exempel /toversion:D06/19/09
  • Ett datum och en tid, till exempel /toversion:D06/19/09T14:32
  • En etikett, till exempel /toversion:LTestLabel
  • Den version på arbetsytan som är mappad till den aktuella katalogen, /toversion:W
  • Versionen på en specifik arbetsyta, till exempel /toversion:WResolveRIConflicts;AKerry

Mer information om hur TFVC parsar kommandona finns i versionspecAnvända Team Foundation-versionskontrollkommandon.

Alternativ

Alternativ

Beskrivning

/changeset

Använd det här alternativet om du vill ange en eller flera specifika ändringsuppsättningar som du vill ta bort.

/keepmergehistory

Det här alternativet har bara en effekt om en eller flera av de ändringsuppsättningar som du återställer innehåller en gren- eller sammanslagningsändring. Ange det här alternativet om du vill att framtida sammanslagningar mellan samma källa och samma mål ska undanta de ändringar som du återställer.

/lock

Ange det här alternativet för att förhindra att andra användare checkar in eller checkar ut objekt tills du har återställt alla associerade ändringar. Mer information finns i Förstå låstyper.

Låsalternativ:

  • None. Standard. Inget lås tillämpas. Om filen som du återställer har låsts tar det här alternativet bort låset.
  • Checkin. Låser ett objekt tills du släpper låset genom att utföra en incheckning. Andra användare kan checka ut det angivna objektet, men användarna kan inte checka in revisioner förrän låset har tagits bort. Du kan inte låsa en fil som redan är låst.
  • Checkout. Hindrar användare från att checka in eller checka ut ett låst objekt tills du tar bort låset genom att göra en incheckning.

/login

Information om det här alternativet finns i Använda alternativ för att ändra hur ett kommando fungerar.

/noprompt

Använd det här alternativet om du vill ignorera eventuella dialogrutor som annars skulle visas under den här åtgärden.

/recursive

Ange det här alternativet om du vill att åtgärden ska inkludera objekt i undermappar.

/toversion

Ange det här alternativet om du vill återställa en fil till dess tillstånd i en specifik ändringsuppsättning. När du använder det här alternativet inaktiverar du effekten av alla ändringsuppsättningar som har tillämpats sedan den version som du anger.

/version

Anger den aktuella versionen av de filer och mappar som du vill återställa.

Kommentarer

Kommandot tf rollback negerar effekten av varje ändringsuppsättning som du anger för varje objekt som du anger. I följande tabell visas hur åtgärden negerar varje typ av ändring.

Typ av ändring återställd Typ av återställningsändring
lägg till, förgrena eller ta bort borttagning ta bort
Redigera Redigera
Kodning Kodning
byt namn/flytta byt namn/flytta
ta bort Outplåner
Sammanfoga Ändra som negerar de ändringar som sammanfogas i den aktuella grenen.

Följande lista innehåller några exempel på ändringar som är resultatet av rollback kommandot:

  • Du återställer en ändringsuppsättning där en tilläggsändring inträffade. Återställningsåtgärden orsakar en återställningsändring och en borttagningsändring .

  • Du återställer ändringsuppsättningen 521 där en redigeringsändring inträffade. Återställningsåtgärden orsakar en återställningsändring och en redigeringsändring som negerar redigeringsändringen i ändringsuppsättningen 521.

  • I ändringsuppsättning 132 sammanfogades du från $/BranchA/File1.txt till $/BranchB/File1.txt. Ändringarna i den sammanslagningen inkluderade redigeringsändringar i ändringsuppsättningarna 92 och 104. I ändringsuppsättning 162 återställer du ändringsuppsättningen 132, vilket resulterar i en återställningsändring och en redigeringsändring till $/BranchB/File1.txt som negerar redigeringsändringarna i ändringsuppsättningarna 92 och 104.

Slutkoder

En slutkod från följande tabell visas när du har kört tf rollback kommandot.

Slutkod beskrivning
0 Åtgärden återställde alla objekt.
1 Åtgärden återställde minst ett objekt men kunde inte återställa ett eller flera objekt.
100 Det gick inte att återställa några objekt.

Exempel

I följande exempel förnekas effekten av ändringsuppsättning 23 på alla objekt som har ändrats i den ändringsuppsättningen:

c:\workspace> tf rollback /changeset:C23

I följande exempel negerar effekten av changeset 23 på filen a.txt:

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

I följande exempel ändras innehållet i a.txt så att det matchar den version som checkades in med ändringsuppsättning 23:

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

I följande exempel ändras innehållet i OurTeamProject så att det matchar den senaste ändringsuppsättningen som tillämpades den 31 augusti 2009 eller före midnatt:

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

Exempel på /keepmergehistory-alternativ

När du återställer en ändringsuppsättning som innehåller en gren eller en sammanslagningsändring vill du vanligtvis att framtida sammanslagningar mellan samma källa och samma mål ska inkludera dessa ändringar. Du kan dock använda /keepmergehistory alternativet om du vill att framtida sammanslagningar mellan samma källa och samma mål ska undanta ändringsuppsättningar som omfattades av en tidigare sammanslagningsåtgärd. Till exempel:

  1. Den 30 juni 2009 gör du en fullständig sammanslagning av alla objekt från $/BranchA/ till $/BranchB/.

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

    Du checkar in den här kopplingen som en del av ändringsuppsättningen 292.

  2. I juli gör du flera ändringar $/BranchA/Util.cs. Dessa ändringar ingår i ändringsuppsättningarna 297, 301 och 305.

  3. Den 1 augusti 2009 sammanfogar du $/BranchA/Util.cs till $/BranchB/Util.cs.

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

    Du checkar in ändringen som en del av ändringsuppsättningen 314. Resultatet av den här åtgärden är att de ändringar som du gjorde i ändringsuppsättningarna 297, 301 och 305 till $/BranchA/Util.cs nu också tillämpas på $/BranchB/Util.cs.

  4. En vecka senare inser du att de ändringar som du gjorde i $/BranchA/Util.cs i juli inte är lämpliga för $/BranchB/Util.cs. Du kan använda rollback kommandot för att negera dessa ändringar. När du använder rollback kommandot för att återställa en sammanslagningsändring eller en grenändring har du ett beslut att fatta.

    • Om du vill att de ändringar som du gjorde i $/BranchA/Util.cs i juli ska tillämpas på $/BranchB/Util.cs i framtida sammanslagningar anger du följande kommando:

      c:\workspace> tf rollback /changeset:314
      
    • Om du vill att de ändringar som du har gjort i $/BranchA/Util.cs i juli aldrig ska tillämpas på $/BranchB/Util.cs i framtida sammanslagningar, anger du följande kommando:

      c:\workspace> tf rollback /changeset:314 /keepmergehistory
      
  5. Några veckor senare sammanfogar du $/BranchA/ till $/BranchB/.

    c:\workspace> tf merge $/BranchA $/BranchB
    
    • Om du utelämnade /keepmergehistory alternativet när du återställde, gäller sammanslagningsändringen för $/BranchB/Util.cs alla ändringsuppsättningar som har tillämpats på $/BranchA/Util.cs sedan ändringsuppsättningen 292, inklusive ändringsuppsättningarna 297, 301 och 305. Med andra ord ångras återställningsändringen av sammanfogningen.

    • Om du inkluderade /keepmergehistory alternativet när du rullade tillbaka gäller sammanslagningsåtgärden för $/BranchB/Util.cs alla ändringsuppsättningar som har tillämpats på $/BranchA/Util.cs sedan ändringsuppsättning 292, exklusive ändringsuppsättningar 297, 301 och 305. Med andra ord ångrar inte sammanfogningen återställningsändringen. Därför kanske innehållet på BranchA inte matchar innehållet på BranchB.