Udostępnij za pośrednictwem


Wycofywanie polecenia (Kontrola wersji serwera Team Foundation)

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

Visual Studio 2019 | Visual Studio 2022

Możesz użyć polecenia Kontrola wersji serwera Team Foundation (TFVC), tf rollback aby wycofać skutki co najmniej jednego zestawu zmian w co najmniej jednym elementu kontrolowanym 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.

Wymagania wstępne

Aby użyć tego polecenia, musisz mieć uprawnienia Odczyt, Wyewidencjonuj i Synchronizacja ustawione na Zezwalaj. Aby uzyskać więcej informacji, zobacz Domyślne uprawnienia kontroli wersji serwera Team Foundation.

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

Opis

<ChangesetFrom>~<ChangesetTo>

Użyj tego argumentu z opcją /changeset , aby określić zestawy zmian, które mają zostać wycofane. 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 /changeset:Tip zmian lub /changeset:T

<ItemSpec>

Użyj tego argumentu, aby określić co najmniej jeden element, który chcesz wycofać. Jeśli używasz /toversion opcji, 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 (Używanie poleceń kontroli wersji programu Team Foundation).

Uwaga

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

<VersionSpec>

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

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 kontroli versionspecwersji serwera TEAMVC, zobacz Use Team Foundation version control commands (Używanie poleceń kontroli wersji programu Team Foundation).

Opcje

Opcja

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 zmianę scalania. 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ślne. 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 Używanie opcji do modyfikowania sposobu działania polecenia.

/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
dodawanie, rozgałęziania lub cofania usuwanie
Edytuj Edytuj
Kodowania Kodowania
zmienianie nazwy/przenoszenie zmienianie nazwy/przenoszenie
usuwanie Undelete
Scalania 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 rollback polecenia :

  • 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 nastąpiła zmiana edycji . 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 zmiany zmian w zestawach zmian 92 i 104. W zestawie zmian 162 wycofasz zestaw zmian 132, co powoduje zmianę wycofania i zmianę edycji na $/BranchB/File1.txt, która neguje zmiany zmian w zestawach zmian 92 i 104.

Kody zakończenia

Po uruchomieniu tf rollback polecenia 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 a.txt pliku:

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

Poniższy przykład zmienia zawartość obiektu OurTeamProject tak, aby była 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ć /keepmergehistory tej opcji, 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 z $/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 również stosowane 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ą rollback polecenia można negować te zmiany. Gdy używasz rollback polecenia , aby wycofać zmianę scalania lub zmianę gałęzi , masz decyzję o podjęciu decyzji.

    • Jeśli chcesz, aby zmiany wprowadzone w pliku $/BranchA/Util.cs w lipcu zostały ponownie zastosowane do pliku $/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 pliku $/BranchA/Util.cs w lipcu nigdy nie zostały ponownie zastosować do pliku $/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 element $/BranchA/ z $/BranchB/.

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

    • Jeśli opcja została uwzględniona /keepmergehistory podczas wycofywania, operacja scalania dotyczy wartości $/BranchB/Util.cs wszystkich zestawów zmian zastosowanych do elementu $/BranchA/Util.cs od momentu 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ść w usłudze BranchA może nie być zgodna z zawartością w usłudze BranchB.