Команда отката (система управления версиями Team Foundation)

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

Visual Studio 2019 | Visual Studio 2022

С помощью команды система управления версиями Team Foundation (TFVC) tf rollback можно откатить эффекты одного или нескольких наборов изменений для одного или нескольких элементов, управляемых версией. Эта команда не удаляет наборы изменений из журнала версий элемента. Вместо этого эта команда создает набор ожидающих изменений в рабочей области, который не влияет на указанные наборы изменений.

Необходимые компоненты

Чтобы использовать эту команду, необходимо иметь разрешения "Чтение", "Извлечь" и "Разрешить". Дополнительные сведения см. в разделе "Разрешения TFVC по умолчанию".

Синтаксис

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

Параметры

Аргументы

Argument

Description

<ChangesetFrom>~<ChangesetTo>

Используйте этот аргумент с параметром /changeset , чтобы указать наборы изменений, которые требуется откатить. Наборы изменений можно указать следующим образом:

  • Один набор изменений, например /changeset:C11
  • Диапазон наборов изменений, например /changeset:C7~C20
  • Дата, например /changeset:D09/30/09
  • Диапазон дат, например /changeset:D09/23/09~D10/07/09
  • Последний набор /changeset:Tip изменений или /changeset:T

<ItemSpec>

Используйте этот аргумент, чтобы указать один или несколько элементов, которые требуется откатить. Если вы используете /toversion этот параметр, необходимо указать этот аргумент.

Дополнительные сведения о том, как TFVC анализирует спецификации элементов, см. в разделе "Использование команд управления версиями Team Foundation".

Примечание.

Можно указать несколько itemspec аргументов.

<VersionSpec>

Предоставленное пользователем /version значение для параметра и /toversion параметра.

Используйте этот аргумент с параметром /toversion отменить изменения файла в его состояние в определенном наборе изменений. Вы можете указать версию следующими способами:

  • Один набор изменений, например /toversion:C32
  • Дата в полночь, например /toversion:D06/19/09
  • Дата и время, например /toversion:D06/19/09T14:32
  • Метка, например /toversion:LTestLabel
  • Версия в рабочей области, сопоставленной с текущим каталогом, /toversion:W
  • Версия в определенной рабочей области, например /toversion:WResolveRIConflicts;AKerry

Дополнительные сведения о анализе versionspecTFVC см. в разделе "Использование команд управления версиями Team Foundation".

Параметры

Параметр

Description

/changeset

Используйте этот параметр, чтобы указать один или несколько определенных наборов изменений, которые требуется отменить.

/keepmergehistory

Этот параметр действует только в том случае, если один или несколько наборов изменений, которые вы откатываете, включают ветвь или слияние изменений. Укажите этот параметр, если вы хотите, чтобы будущие слияния между тем же источником и тем же целевым объектом исключили изменения, которые вы откатите.

/lock

Укажите этот параметр, чтобы запретить другим пользователям проверка в элементе или проверка отката всех связанных изменений. Дополнительные сведения см. в разделе "Общие сведения о типах блокировки".

Параметры блокировки:

  • None. По умолчанию. Блокировка не применяется. Если файл, который вы откатили, заблокирован, этот параметр удаляет блокировку.
  • Checkin. Блокирует элемент, пока не выпустите блокировку, выполнив проверка-в. Другие пользователи могут проверка указанный элемент, но пользователи не могут проверка в редакциях, пока блокировка не будет удалена. Невозможно заблокировать файл, который уже заблокирован.
  • Checkout. Запрещает пользователям проверка в или проверка отключать заблокированный элемент, пока не удалите блокировку, выполнив проверка-in.

/login

Сведения об этом параметре см. в разделе "Использование параметров" для изменения функций команд.

/noprompt

Используйте этот параметр, чтобы отключить все диалоговые окна, которые в противном случае будут отображаться во время этой операции.

/recursive

Укажите этот параметр, если требуется, чтобы операция включала элементы в вложенные папки.

/toversion

Укажите этот параметр, чтобы отменить изменения файл в его состояние в определенном наборе изменений. При использовании этого параметра вы отменяете влияние всех наборов изменений, которые были применены с указанной версии.

/version

Указывает текущую версию файлов и папок, которые требуется откатить.

Замечания

Команда tf rollback отрицает эффект каждого набора изменений, указанного для каждого указанного элемента. В следующей таблице показано, как операция отрицает каждое изменение.

Тип отката изменений Тип изменения отката
добавление, ветвь или отмена отмены Удаление
edit edit
encoding encoding
переименование и перемещение переименование и перемещение
Удаление Восстановить
merge Изменение, которое отрицает любые изменения, объединенные в текущую ветвь.

В следующем списке приведены некоторые примеры изменений, которые приводятся в rollback результате выполнения команды:

  • Откат набора изменений, в котором произошло изменение добавления . Операция отката приводит к изменению отката и удалению.

  • Откат отката набора изменений 521, в котором произошло изменение . Операция отката вызывает откат иизменение, которое отрицает изменение в наборе изменений 521.

  • В наборе изменений 132 вы объединились с $/BranchA/File1.txt на $/BranchB/File1.txt. Изменения в этом слиянии включали изменения изменений в наборах изменений 92 и 104. В наборе изменений 162 вы откатите набор изменений 132, который приводит к изменению отката и изменению правки на $/BranchB/File1.txt, которая отрицает изменения в наборах изменений 92 и 104.

Коды выхода

Код выхода из следующей таблицы отображается после выполнения tf rollback команды.

Код выхода Description
0 Операция успешно откатила все элементы.
1 Операция откатила хотя бы один элемент успешно, но не удалось откатить один или несколько элементов.
100 Операция не могла откатить элементы.

Примеры

Следующий пример отрицает влияние набора изменений 23 на все элементы, которые были изменены в этом наборе изменений:

c:\workspace> tf rollback /changeset:C23

Следующий пример отрицает влияние набора изменений 23 на файл a.txt:

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

В следующем примере содержимое a.txt изменяется в соответствии с версией, проверка в наборе изменений 23:

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

В следующем примере содержимое OurTeamProject изменяется на соответствие последнему набору изменений, который был применен 31 августа 2009 г. или до полуночи:

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

Пример параметра /keepmergehistory

При откате набора изменений, включающего ветвь или изменение слияния, обычно требуется, чтобы будущие слияния между тем же источником и тем же целевым объектом включали эти изменения. Однако можно использовать /keepmergehistory этот параметр, если вы хотите, чтобы будущие слияния между тем же источником и тем же целевым объектом исключили наборы изменений, которые были охвачены в предыдущей операции слияния. Например:

  1. 30 июня 2009 г. вы выполняете полное слияние всех элементов из $/BranchA/ в $/BranchB/.

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

    Вы проверка в этом слиянии в рамках набора изменений 292.

  2. В июле вы вносите несколько изменений $/BranchA/Util.cs. Эти изменения охватываются в наборах изменений 297, 301 и 305.

  3. 1 августа 2009 года вы объединяете $/BranchA/Util.cs с $/BranchB/Util.cs.

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

    Вы проверка изменения в рамках набора изменений 314. Результатом этой операции является то, что изменения, внесенные в наборы изменений 297, 301 и 305 на $/BranchA/Util.cs теперь также применяются к $/BranchB/Util.cs.

  4. Через неделю вы понимаете, что изменения, внесенные в $/BranchA/Util.cs в июле, не подходили для $/BranchB/Util.cs. Вы можете использовать rollback команду для отмены этих изменений. При использовании rollback команды для отката изменения слияния или изменения ветви необходимо принять решение.

    • Если вы хотите, чтобы изменения, внесенные в $/BranchA/Util.cs в июле, будут повторно применены к $/BranchB/Util.cs в будущих слияниях, введите следующую команду:

      c:\workspace> tf rollback /changeset:314
      
    • Если вы хотите, чтобы изменения, внесенные в $/BranchA/Util.cs в июле, никогда не будут повторно применяться к $/BranchB/Util.cs в будущих слияниях, введите следующую команду:

      c:\workspace> tf rollback /changeset:314 /keepmergehistory
      
  5. Через несколько недель вы объединяете $/BranchA/ в $/BranchB/.

    c:\workspace> tf merge $/BranchA $/BranchB
    
    • Если вы опустили /keepmergehistory параметр при откате, изменение слияния применяется к $/BranchB/Util.cs все наборы изменений, примененные к $/BranchA/Util.cs с момента изменения набора изменений 292, включая набор изменений 297, 301 и 305. Другими словами, слияние отменяет изменение отката.

    • Если вы включили /keepmergehistory параметр при откате, операция слияния применяется к $/BranchB/Util.cs все наборы изменений, примененные к $/BranchA/Util.cs после набора изменений 292, за исключением наборов изменений 297, 301 и 305. Другими словами, слияние не отменяет изменение отката. Поэтому содержимое в BranchA может не соответствовать содержимому в BranchB.