Команда отката (система управления версиями 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
Дополнительные сведения о анализе versionspec
TFVC см. в разделе "Использование команд управления версиями 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
этот параметр, если вы хотите, чтобы будущие слияния между тем же источником и тем же целевым объектом исключили наборы изменений, которые были охвачены в предыдущей операции слияния. Например:
30 июня 2009 г. вы выполняете полное слияние всех элементов из $/BranchA/ в $/BranchB/.
c:\workspace> tf merge $/BranchA $/BranchB
Вы проверка в этом слиянии в рамках набора изменений 292.
В июле вы вносите несколько изменений $/BranchA/Util.cs. Эти изменения охватываются в наборах изменений 297, 301 и 305.
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.
Через неделю вы понимаете, что изменения, внесенные в $/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
Через несколько недель вы объединяете $/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.