Команда отката (Team Foundation Version Control)
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]]
Параметры
Аргументы
аргумент
описание
<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
Дополнительные сведения о том, как TFVC анализирует versionspec
, см. в разделе Использование команд управления версиями Team Foundation.
Параметры
параметра
описание
/changeset
Используйте этот параметр, чтобы указать один или несколько определенных наборов изменений, которые требуется отменить.
/keepmergehistory
Этот параметр действует только в том случае, если один или несколько наборов изменений, которые вы откатываете, включают ветвь или слияние изменения. Укажите этот параметр, если вы хотите, чтобы будущие слияния между тем же источником и тем же целевым объектом исключили изменения, которые вы откатите.
/lock
Укажите этот параметр, чтобы запретить другим пользователям выполнять вход или извлечение элементов до тех пор, пока не завершите откат всех связанных изменений. Дополнительные сведения см. в статье Общие сведения о типах блокировки.
Параметры блокировки:
-
None
. По умолчанию. Блокировка не применяется. Если файл, который вы откатили, заблокирован, этот параметр удаляет блокировку. -
Checkin
. Блокирует элемент, пока не выпустите блокировку, выполнив вход. Другие пользователи могут извлечь указанный элемент, но пользователи не смогут выполнять вход в редакции, пока блокировка не будет удалена. Невозможно заблокировать файл, который уже заблокирован. -
Checkout
. Запрещает пользователям выполнять вход или извлечение заблокированного элемента, пока не удалите блокировку, выполнив вход.
/login
Сведения об этом параметре см. в разделе Использование параметров для измененияфункций команд.
/noprompt
Используйте этот параметр, чтобы отключить все диалоговые окна, которые в противном случае будут отображаться во время этой операции.
/recursive
Укажите этот параметр, если требуется, чтобы операция включала элементы в вложенные папки.
/toversion
Укажите этот параметр, чтобы вернуть файл в его состояние в определенном наборе изменений. При использовании этого параметра вы отменяете влияние всех наборов изменений, которые были применены с указанной версии.
/version
Указывает текущую версию файлов и папок, которые требуется откатить.
Замечания
Команда tf rollback
отрицает эффект каждого набора изменений, указанного для каждого указанного элемента. В следующей таблице показано, как операция отрицает каждое изменение.
Тип отката изменений | Тип изменения отката |
---|---|
добавить, ветвиили отмены | удаления |
редактирование | редактирование |
кодировки | кодировки |
переименовать и переместить | переименовать и переместить |
удаления | отмена |
слиянием | Изменение, которое отрицает любые изменения, объединенные в текущую ветвь. |
В следующем списке приведены некоторые примеры изменений, которые приводятся из команды rollback
:
Откат набора изменений, в котором произошло добавление изменения. Операция отката вызывает изменение отката
и изменение удаления .Откат изменений 521, в котором произошло изменение. Операция отката приводит к изменению
отката и изменение , которое отрицает изменениеизменения в наборе изменений 521.В наборе изменений 132 вы объединились с $/BranchA/File1.txt на $/BranchB/File1.txt. Изменения в этом слиянии включали изменения изменения в наборах изменений 92 и 104. В наборе изменений 162 вы откатите набор изменений 132, который приводит к изменению отката и изменение изменения на $/BranchB/File1.txt, которое отрицает изменения изменений в наборах изменений 92 и 104.
Коды выхода
Код выхода из следующей таблицы отображается после выполнения команды tf rollback
.
Код выхода | Описание |
---|---|
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
. При использовании командыдля отката изменения слияния или изменения ветви необходимо принять решение.Если вы хотите, чтобы изменения, внесенные в $/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.
Связанные статьи
- использовать команды управления версиями Team Foundation
- команда слияния