Udostępnij za pośrednictwem


Wycofywanie polecenia (Kontrola wersji team foundation)

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

Visual Studio 2019 | Program Visual Studio 2022

Możesz użyć polecenia Team Foundation Version Control (TFVC) tf rollback, aby wycofać wpływ co najmniej jednego zestawu zmian na co najmniej jeden element kontrolowany przez wersję. To polecenie nie usuwa zestawów zmian z historii wersji elementu. Zamiast tego to polecenie tworzy zestaw oczekujących zmian w obszarze roboczym, które negują skutki określonych zestawów zmian.

Warunki wstępne

Aby użyć tego polecenia, uprawnienia odczytu, wyewidencjonowaniai ewidencjonowania ustawione na Zezwalaj na. Aby uzyskać więcej informacji, zobacz Domyślne uprawnienia serwera TFVC.

Składnia

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ów

opis

<ChangesetFrom>~<ChangesetTo>

Użyj tego argumentu z opcją /changeset, aby określić zestawy zmian, które chcesz wycofać. Zestawy zmian można określić na następujące sposoby:

  • Pojedynczy zestaw zmian, na przykład /changeset:C11
  • Zakres zestawów zmian, na przykład /changeset:C7~C20
  • Data, na przykład /changeset:D09/30/09
  • Zakres dat, na przykład /changeset:D09/23/09~D10/07/09
  • Najnowszy zestaw zmian, /changeset:Tip lub /changeset:T

<ItemSpec>

Użyj tego argumentu, aby określić co najmniej jeden element, który chcesz wycofać. Jeśli używasz opcji /toversion, musisz określić ten argument.

Aby uzyskać więcej informacji na temat sposobu analizowania specyfikacji elementów kontroli wersji serwera TFVC, zobacz Use Team Foundation version control commands.

Nuta

Można określić więcej niż jeden argument itemspec.

<VersionSpec>

Wartość podana przez użytkownika zarówno dla opcji /version, jak i opcji /toversion.

Użyj tego argumentu z opcją /toversion, aby przywrócić plik do jego stanu w określonym zestawie zmian. Wersję można określić na następujące sposoby:

  • Pojedynczy zestaw zmian, na przykład /toversion:C32
  • Data o północy, na przykład /toversion:D06/19/09
  • Data i godzina, na przykład /toversion:D06/19/09T14:32
  • Etykieta, na przykład /toversion:LTestLabel
  • Wersja w obszarze roboczym mapowanym na bieżący katalog /toversion:W
  • Wersja w określonym obszarze roboczym, na przykład /toversion:WResolveRIConflicts;AKerry

Aby uzyskać więcej informacji na temat analizowania versionspeckontroli wersji serwera TFVC, zobacz Use Team Foundation version control commands (Używanie poleceń kontroli wersji programu Team Foundation).

Opcje

opcji

opis

/changeset

Użyj tej opcji, aby określić co najmniej jeden konkretny zestaw zmian, który chcesz negować.

/keepmergehistory

Ta opcja ma wpływ tylko wtedy, gdy co najmniej jeden zestaw zmian, które są przywracane, obejmują gałąź lub scalanie zmiany. Określ tę opcję, jeśli chcesz, aby przyszłe scalania między tym samym źródłem i tym samym elementem docelowym wykluczały zmiany, które są wycofywanie.

/lock

Określ tę opcję, aby uniemożliwić innym użytkownikom ewidencjonowanie lub wyewidencjonowanie elementów do momentu zakończenia wycofywania wszystkich skojarzonych zmian. Aby uzyskać więcej informacji, zobacz Omówienie typów blokad.

Opcje blokady:

  • None. Domyślny. Nie zastosowano blokady. Jeśli plik, który jest przywracany, został zablokowany, ta opcja spowoduje usunięcie blokady.
  • Checkin. Blokuje element do momentu zwolnienia blokady przez wykonanie ewidencjonu. Inni użytkownicy mogą wyewidencjonować określony element, ale użytkownicy nie mogą zaewidencjonować poprawek, dopóki blokada nie zostanie usunięta. Nie można zablokować pliku, który jest już zablokowany.
  • Checkout. Uniemożliwia użytkownikom zaewidencjonowanie lub wyewidencjonowanie zablokowanego elementu do momentu usunięcia blokady przez zaewidencjonowanie.

/login

Aby uzyskać informacje na temat tej opcji, zobacz Use options to modify how a command functions.

/noprompt

Użyj tej opcji, aby pominąć wszystkie okna dialogowe, które w przeciwnym razie będą wyświetlane podczas tej operacji.

/recursive

Określ tę opcję, jeśli chcesz, aby operacja zawierała elementy w podfolderach.

/toversion

Określ tę opcję, aby przywrócić plik do jego stanu w określonym zestawie zmian. Jeśli używasz tej opcji, negujesz efekt wszystkich zestawów zmian, które zostały zastosowane od określonej wersji.

/version

Określa bieżącą wersję plików i folderów, które chcesz wycofać.

Uwagi

Polecenie tf rollback neguje efekt każdego zestawu zmian określonego dla każdego określonego elementu. W poniższej tabeli przedstawiono sposób, w jaki operacja neguje każdy rodzaj zmiany.

Typ zmiany wycofanej Typ zmiany wycofywania
dodaj, gałęzilub cofania usuwanie
edytowanie edytowanie
kodowanie kodowanie
zmienianie nazwy/przenoszenie zmienianie nazwy/przenoszenie
usuwanie cofanie usunięcia
scalanie Zmień to, co neguje wszystkie zmiany scalone z bieżącą gałęzią.

Poniższa lista zawiera kilka przykładów zmian, które wynikają z polecenia rollback:

  • Wycofasz zestaw zmian, w którym wystąpiła zmiana dodawania. Operacja wycofywania powoduje zmianę wycofywania i zmianę usuwania.

  • Wycofasz zestaw zmian 521, w którym wystąpiła zmiana edytowania. Operacja wycofywania powoduje zmianę wycofywania i zmianę edycji, która neguje zmianę edycji w zestawie zmian 521.

  • W zestawie zmian 132 scalone z $/BranchA/File1.txt do $/BranchB/File1.txt. Zmiany w tym scalaniu obejmowały edycji zmian w zestawach zmian 92 i 104. W zestawie zmian 162 wycofasz zestaw zmian 132, co powoduje wycofanie zmian i zmianę edycji$/BranchB/File1.txt, która neguje edycji zmian w zestawach zmian 92 i 104.

Kody zakończenia

Po uruchomieniu polecenia tf rollback zostanie wyświetlony kod zakończenia z poniższej tabeli.

Kod zakończenia Opis
0 Operacja pomyślnie wycofała wszystkie elementy.
1 Operacja wycofała co najmniej jeden element, ale nie mogła wycofać co najmniej jednego elementu.
100 Operacja nie mogła wycofać żadnych elementów.

Przykłady

Poniższy przykład neguje wpływ zestawu zmian 23 na wszystkie elementy, które zostały zmienione w tym zestawie zmian:

c:\workspace> tf rollback /changeset:C23

Poniższy przykład neguje wpływ zestawu zmian 23 na plik a.txt:

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

Poniższy przykład zmienia zawartość a.txt tak, aby była zgodna z wersją zaewidencjonowana przy użyciu zestawu zmian 23:

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

W poniższym przykładzie zawartość OurTeamProject zgodna z ostatnim zestawem zmian zastosowanym do północy 31 sierpnia 2009 r. lub przed północą:

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

Przykład /keepmergehistory opcja

Po wycofaniu zestawu zmian, który zawierał gałąź lub zmianę scalania, zwykle chcesz, aby przyszłe scalania między tym samym źródłem i tym samym elementem docelowym obejmowały te zmiany. Można jednak użyć opcji /keepmergehistory, jeśli chcesz, aby przyszłe scalanie między tym samym źródłem i tym samym elementem docelowym wykluczało zestawy zmian, które zostały objęte w poprzedniej operacji scalania. Na przykład:

  1. 30 czerwca 2009 r. wykonujesz pełne scalanie wszystkich elementów z $/BranchA/ do $/BranchB/.

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

    Zaewidencjonujesz to scalanie w ramach zestawu zmian 292.

  2. W lipcu wprowadzisz kilka zmian $/BranchA/Util.cs. Te zmiany są uwzględniane w zestawach zmian 297, 301 i 305.

  3. 1 sierpnia 2009 r. scalisz $/BranchA/Util.cs, aby $/BranchB/Util.cs.

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

    Zaewidencjonujesz zmianę w ramach zestawu zmian 314. Wynikiem tej operacji jest to, że zmiany wprowadzone w zestawach zmian 297, 301 i 305 do $/BranchA/Util.cs są teraz stosowane również do $/BranchB/Util.cs.

  4. Tydzień później zdajesz sobie sprawę, że zmiany wprowadzone w $/BranchA/Util.cs w lipcu nie są odpowiednie dla $/BranchB/Util.cs. Za pomocą polecenia rollback można negować te zmiany. Jeśli używasz polecenia rollback do wycofania scalania zmiany lub zmiany gałęzi , masz decyzję o podjęciu decyzji.

    • Jeśli chcesz, aby zmiany wprowadzone w $/BranchA/Util.cs w lipcu zostały ponownie zastosowane do $/BranchB/Util.cs w przyszłych scalaniach, wprowadź następujące polecenie:

      c:\workspace> tf rollback /changeset:314
      
    • Jeśli chcesz, aby zmiany wprowadzone w $/BranchA/Util.cs w lipcu nigdy nie zostały ponownie zastosować do $/BranchB/Util.cs w przyszłych scalaniach, wprowadź następujące polecenie:

      c:\workspace> tf rollback /changeset:314 /keepmergehistory
      
  5. Kilka tygodni później scalisz $/BranchA/ z $/BranchB/.

    c:\workspace> tf merge $/BranchA $/BranchB
    
    • Jeśli pominięto opcję /keepmergehistory po wycofaniu, zmiana scalania dotyczy $/BranchB/Util.cs wszystkich zestawów zmian zastosowanych do $/BranchA/Util.cs od zmiany zestawu zmian 292, w tym zestawów zmian 297, 301 i 305. Innymi słowy scalanie cofa zmianę wycofywania.

    • Jeśli opcja /keepmergehistory została uwzględniona po wycofaniu, operacja scalania ma zastosowanie do $/BranchB/Util.cs wszystkich zestawów zmian zastosowanych do $/BranchA/Util.cs od zmiany zestawu zmian 292, z wyłączeniem zestawów zmian 297, 301 i 305. Innymi słowy, scalanie nie cofa zmiany wycofywania. W związku z tym zawartość BranchA może być niezgodna z zawartością BranchB.