Příkaz Vrácení zpět (Správa verzí Team Foundation)

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

Visual Studio 2019 | Visual Studio 2022

Pomocí příkazu Správa verzí Team Foundation (TFVC) tf rollback můžete vrátit efekty jedné nebo více sad změn na jednu nebo více verzí kontrolovaných položek. Tento příkaz neodebere sady změn z historie verzí položky. Místo toho tento příkaz vytvoří sadu čekajících změn v pracovním prostoru, které negují účinky zadaných sad změn.

Požadavky

Chcete-li použít tento příkaz, musíte mít oprávnění ke čtení, rezervace a vrácení se změnami nastavená na povolit. Další informace naleznete v tématu Výchozí oprávnění TFVC.

Syntaxe

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

Parametry

Argumenty

Argument

Popis

<ChangesetFrom>~<ChangesetTo>

Pomocí tohoto argumentu /changeset můžete určit sady změn, které chcete vrátit zpět. Sady změn můžete zadat následujícími způsoby:

  • Jedna sada změn, například /changeset:C11
  • Rozsah sad změn, například /changeset:C7~C20
  • Datum, například /changeset:D09/30/09
  • Rozsah kalendářních dat, například /changeset:D09/23/09~D10/07/09
  • Nejnovější sada změn nebo /changeset:Tip/changeset:T

<ItemSpec>

Tento argument použijte k určení jedné nebo více položek, které chcete vrátit zpět. Pokud použijete /toversion tuto možnost, je nutné zadat tento argument.

Další informace o tom, jak TFVC parsuje specifikace položek, naleznete v tématu Použití příkazů správy verzí Team Foundation.

Poznámka:

Můžete zadat více než jeden itemspec argument.

<VersionSpec>

Hodnota zadaná uživatelem /version pro možnost i /toversion možnost.

Tento argument použijte s /toversion možností vrátit soubor do stavu v konkrétní sadě změn. Verzi můžete zadat následujícími způsoby:

  • Jedna sada změn, například /toversion:C32
  • Datum o půlnoci, například /toversion:D06/19/09
  • Datum a čas, například /toversion:D06/19/09T14:32
  • Popisek, například /toversion:LTestLabel
  • Verze v pracovním prostoru, která je namapovaná na aktuální adresář, /toversion:W
  • Verze v konkrétním pracovním prostoru, například /toversion:WResolveRIConflicts;AKerry

Další informace o tom, jak TFVC parsuje versionspecpříkazy správy verzí Team Foundation.

Možnosti

Možnost

Popis

/changeset

Tuto možnost použijte k určení jedné nebo více konkrétních sad změn, které chcete negovat.

/keepmergehistory

Tato možnost má vliv jenom v případě, že jedna nebo více sad změn, které vracíte, zahrnují změnu větve nebo sloučení . Tuto možnost zadejte, pokud chcete budoucí sloučení mezi stejným zdrojem a stejným cílem vyloučit změny, které vracíte zpět.

/lock

Tuto možnost zadejte, pokud chcete ostatním uživatelům zabránit v vrácení se změnami nebo rezervace položek, dokud nedokončíte vrácení všech přidružených změn zpět. Další informace najdete v tématu Vysvětlení typů zámků.

Možnosti uzamčení:

  • None. Výchozí. Není použit žádný zámek. Pokud byl soubor, který vracíte zpět, uzamčen, tato možnost zámek odebere.
  • Checkin. Uzamkne položku, dokud zámek nepustíte provedením vrácení se změnami. Ostatní uživatelé můžou rezervovat zadanou položku, ale uživatelé nemůžou vrátit revize se změnami, dokud se zámek neodebere. Soubor, který je už uzamčený, nemůžete uzamknout.
  • Checkout. Zabrání uživatelům vrátit se změnami nebo rezervovat uzamčenou položku, dokud zámek neodeberete vrácením se změnami.

/login

Informace o této možnosti naleznete v tématu Použití možností k úpravě způsobu fungování příkazu.

/noprompt

Tuto možnost použijte k potlačení všech dialogových oken, která by se jinak zobrazovala během této operace.

/recursive

Tuto možnost zadejte, pokud chcete, aby operace zahrnovala položky do podsložek.

/toversion

Tuto možnost zadejte, pokud chcete vrátit soubor do stavu v konkrétní sadě změn. Při použití této možnosti negujete účinek všech sad změn, které byly použity od zadané verze.

/version

Určuje aktuální verzi souborů a složek, které chcete vrátit zpět.

Poznámky

Příkaz tf rollback neguje účinek každé sady změn, kterou zadáte pro každou zadaná položku. Následující tabulka uvádí, jak operace neguje jednotlivé druhy změn.

Typ změny vrácený zpět Typ změny vrácení zpět
přidání, větev nebo zrušení odstranění odstranění
Upravit Upravit
Kódování Kódování
přejmenování nebo přesunutí přejmenování nebo přesunutí
odstranění Undelete
Sloučit Změna, která neguje všechny změny sloučené do aktuální větve.

Následující seznam obsahuje některé příklady změn, které jsou výsledkem rollback příkazu:

  • Vrátíte zpět sadu změn, ve které došlo k přidání změny. Operace vrácení zpět způsobí změnu vrácení zpět a změnu odstranění .

  • Vrátíte zpět sadu změn 521, ve které došlo ke změně úprav . Operace vrácení zpět způsobí změnu vrácení zpět a změnu úprav , která neguje změnu úprav v sadě změn 521.

  • V sadě změn 132 jste sloučili z $/BranchA/File1.txt do $/BranchB/File1.txt. Změny v sloučení zahrnovaly úpravy změn v sadách změn 92 a 104. V sadě změn 162 vrátíte zpět sadu změn 132, což vede ke změně vrácení zpět a změně úprav na $/BranchB/File1.txt , která neguje změny úprav v sadách změn 92 a 104.

Ukončovací kódy

Po spuštění tf rollback příkazu se zobrazí ukončovací kód z následující tabulky.

Ukončovací kód Popis
0 Operace úspěšně vrátila všechny položky.
0 Operace vrátila alespoň jednu položku úspěšně, ale nepodařilo se vrátit zpět jednu nebo více položek.
100 Operace nemohla vrátit žádné položky.

Příklady

Následující příklad neguje účinek sady změn 23 na všechny položky, které byly změněny v této sadě změn:

c:\workspace> tf rollback /changeset:C23

Následující příklad neguje účinek sady změn 23 na soubor a.txt:

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

Následující příklad změní obsah a.txt tak, aby odpovídal verzi, která byla vrácena se změnami se sadou změn 23:

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

Následující příklad změní obsah OurTeamProject tak, aby odpovídal poslední sadě změn použité 31. srpna 2009 nebo před půlnocí:

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

Příklad možnosti /keepmergehistory

Když vrátíte zpět sadu změn, která obsahovala větev nebo změnu sloučení, obvykle chcete, aby budoucí sloučení mezi stejným zdrojem a stejným cílem zahrnovala tyto změny. Tuto možnost však můžete použít /keepmergehistory , pokud chcete budoucí sloučení mezi stejným zdrojem a stejným cílem vyloučit sady změn, které byly zahrnuty v předchozí operaci sloučení. Příklad:

  1. 30. června 2009 provedete úplné sloučení všech položek z $/BranchA/ do $/BranchB/.

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

    Toto sloučení můžete vrátit se změnami jako součást sady změn 292.

  2. V červenci provedete několik změn $/BranchA/Util.cs. Tyto změny jsou zahrnuty v sadách změn 297, 301 a 305.

  3. 1. srpna 2009 sloučíte $/BranchA/Util.cs do $/BranchB/Util.cs.

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

    Změnu můžete vrátit se změnami jako součást sady změn 314. Výsledkem této operace je, že úpravy provedené v sadách změn 297, 301 a 305 na $/BranchA/Util.cs se teď použijí také na $/BranchB/Util.cs.

  4. O týden později zjistíte, že úpravy provedené v $/BranchA/Util.cs v červenci nejsou vhodné pro $/BranchB/Util.cs. Tyto změny můžete negovat pomocí rollback příkazu. Když příkaz použijete rollback k vrácení změny sloučení nebo změny větve , musíte se rozhodnout.

    • Pokud chcete, aby se změny provedené v $/BranchA/Util.cs v červenci znovu použily na $/BranchB/Util.cs v budoucnu, zadejte následující příkaz:

      c:\workspace> tf rollback /changeset:314
      
    • Pokud chcete, aby se změny provedené v $/BranchA/Util.cs v červenci nikdy znovu nepoužívaly na $/BranchB/Util.cs v budoucnu, zadejte následující příkaz:

      c:\workspace> tf rollback /changeset:314 /keepmergehistory
      
  5. O několik týdnů později sloučíte $/BranchA/ do $/BranchB/.

    c:\workspace> tf merge $/BranchA $/BranchB
    
    • Pokud při vrácení zpět tuto možnost vynecháte /keepmergehistory , platí změna sloučení pro $/BranchB/Util.cs všechny sady změn použité u $/BranchA/Util.cs od sady změn 292, včetně sad změn 297, 301 a 305. Jinými slovy sloučení vrátí zpět změnu vrácení zpět.

    • Pokud jste při vrácení zpět zahrnuli /keepmergehistory možnost, operace sloučení se vztahuje na $/BranchB/Util.cs všechny sady změn použité u $/BranchA/Util.cs od sady změn 292, s výjimkou sad změn 297, 301 a 305. Jinými slovy sloučení nevrácenou změnu vrácení zpět zpět. Proto se obsah ve větvi A nemusí shodovat s obsahem ve branchB.