Как выполнить откат в Visual Studio TFS?

Я работаю над одним подмодулем большого проекта, для которого используется VSTS 2008.

У меня есть необходимость откатить модуль на более раннюю версию (около 4-х предыдущих проверок). Я попытался сделать это в пользовательском интерфейсе Visual Studio и, наконец, понял, что нет возможности отката.

После некоторых исследований я определил, что есть загрузка Power Tools, которая якобы поддерживает откат с помощью инструмента командной строки. Тем не менее, похоже, что на него практически нет документации.

Кто-нибудь может пошагово описать, как откатиться на предыдущую версию в VS2008? (С помощью электроинструментов или иным образом).

Бонусный вопрос: кто-нибудь знает, можем ли мы получить более надежную поддержку отката в VS2010?


person alchemical    schedule 16.02.2010    source источник
comment
Поскольку этот вопрос появляется в Google при вопросе об откате в TFS, я просто хотел добавить, что это стало намного проще в TFS 2012. См. мой ответ для получения дополнительной информации,   -  person René    schedule 21.03.2013


Ответы (7)


Щелкните правой кнопкой мыши папку в Source Control Explorer. Выберите «Получить конкретную версию». Выберите версию, которую вы хотите получить (по набору изменений, дате, метке и т. д.).

РЕДАКТИРОВАТЬ: на этом этапе ваша локальная версия будет той версией, которую вы хотите. Проверьте измененные файлы, а затем верните их обратно. Это вызовет мастер слияния, и он, вероятно, будет жаловаться на то, что сервер имеет более новую версию, чем ваша. Пройдите через мастер и объедините файлы так, как вы хотите (один из вариантов — отменить изменения сервера, что, похоже, вы и хотите). В конце этого процесса он может сообщить вам, что файлы не были зарегистрированы из-за процесса слияния (или чего-то в этом роде), просто нажмите «ОК», а затем снова зарегистрируйтесь. Это должно выполнить то, что вам нужно.

person Brett Widmeier    schedule 16.02.2010
comment
Я считаю, что это позволяет мне видеть версию, которую я хочу, но как я могу сказать TFS сделать предыдущую версию, которую я хочу -текущей-версией кода. - person alchemical; 17.02.2010
comment
Отредактировано, чтобы включить больше шагов. - person Brett Widmeier; 17.02.2010
comment
Довольно грустно для TFS, если это действительно ответ. - person alchemical; 17.02.2010
comment
Это боль, должен быть лучший способ. - person Brett Widmeier; 17.02.2010
comment
Также этот подход не работает вообще, когда вы хотите откатить папку, в которую были добавлены новые файлы и/или другие были удалены. - person bitbonk; 03.03.2011
comment
Это ужасно. Приходится переходить к КАЖДОМУ файлу и проверять его и возвращаться после получения более старой версии, просто чтобы отменить изменение. Так рад, что мы переехали в SVN. - person Chev; 21.04.2011
comment
Статья с той же информацией: msdn.microsoft. com/en-us/library/ms194956%28v=VS.90%29.aspx — так что да, это действительно официальный способ сделать это. @bitbonk: В статье есть информация о том, как справиться с восстановлением/удалением файлов. - person Merlyn Morgan-Graham; 02.11.2011
comment
Я попытался сделать это, получил конкретную версию, которую хотел, проверил весь мой командный проект, а затем при попытке зарегистрироваться он просто сказал, что никаких изменений не было внесено, и проверка отменяется. Не могу поверить, что Microsoft не включила функцию отката, кажется, что ее не включить довольно фундаментально! - person TabbyCool; 29.05.2012
comment
Хуже всего то, что единственная причина, по которой мы находимся в ситуации, когда нам нужно выполнить откат, заключается в том, что TFS отказалась объединить наши ссылки на службы, поэтому нам пришлось удалить их в нашей основной ветке и ветке разработки только для того, чтобы выполнить слияние. - person TabbyCool; 29.05.2012
comment
Сейчас есть гораздо лучший и более быстрый способ сделать это. Посмотрите на ответ @Rene. Более новые TFS и VS вам нужно сделать это через Source Control Explorer, и это всего 2 шага, и он работает сразу для всех файлов в наборе изменений. Фу! - person Piotr Kula; 24.03.2014

К счастью, в TFS 2012 это стало намного проще. Теперь в графическом интерфейсе есть возможность отката.

MSDN содержит дополнительную информацию о том, как это сделать и какие варианты доступны. Вот текст из MSDN о том, как откатиться на конкретную версию:

Чтобы вернуться к определенной версии:

  1. В обозревателе управления исходным кодом выберите элемент, откройте его контекстное меню и выберите «Откат».
  2. В диалоговом окне «Откат» выберите «Откат к определенной версии».

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

person René    schedule 21.03.2013
comment
Да, это работало намного лучше, чем использование отката в обозревателе решений, как я делал, но каждый раз он просто возвращался к самым последним файлам TFS. Ваш совет сработал отлично и просто! Я думаю, это самый новый и лучший ответ. - person Piotr Kula; 24.03.2014
comment
Чем откат отличается от получения конкретной версии? - person Kyle Delaney; 24.04.2018
comment
@KyleDelaney Get Specific Version просто получает эту версию на ваш диск без каких-либо ожидающих изменений, но Rollback автоматически помечает все измененные файлы как отредактированные, откатные, и вы можете напрямую проверить откатную версию ... - person Christoph Fink; 27.04.2020

ЕСТЬ способ, но я не нахожу его красивым... Откройте командную строку Visual Studio и...

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>tf rollback -?
TF - Team Foundation Version Control Tool, Version 10.0.30319.1
Copyright (c) Microsoft Corporation.  All rights reserved.

Rolls back the changes in a single or a range of changesets:
tf rollback /changeset:changesetfrom~changesetto [itemspec] [/recursive]
            [/lock:none|checkin|checkout] [/version:versionspec]
            [/keepmergehistory] [/noprompt] [/login:username,[password]]

tf rollback /toversion:versionspec itemspec [/recursive]
            [/lock:none|checkin|checkout] [/version:versionspec]
            [/keepmergehistory] [/noprompt] [/login:username,[password]]

Versionspec:
    Date/Time         D"any .Net Framework-supported format"
                      or any of the date formats of the local machine
    Changeset number  Cnnnnnn
    Label             Llabelname
    Latest version    T
    Workspace         Wworkspacename;workspaceowner
person Andrei Rînea    schedule 01.04.2011
comment
кажется, это недоступно в VS2008 (помечено OP) - person Morgan T.; 25.05.2012

Август 2011 г. TFS Power Tools добавила полную поддержку отката прямо в пользовательский интерфейс Visual Studio 2010.

Ссылка для скачивания: http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f

Эта функция также включена в TFS 2012.

person Warren Rumak    schedule 24.08.2011
comment
Это работает, но я чувствую, что это не настоящий откат. Желаемой функциональностью было бы удаление всех наборов изменений, сделанных после того, к которому мы возвращаемся. Это просто добавляет новый набор изменений с содержимым отката. - person matadur; 10.07.2012
comment
@matadur, проблема с этим подходом заключается в том, что вы можете в конечном итоге удалить изменения, которые вам не нужны, такие как изменения в других ветвях, другие решения, шаблоны процессов сборки и, начиная с TFS 2012, запросы / ответы на проверку кода. а также запросы/ответы клиентов обратной связи. Вы также можете получить потерянные ссылки в рабочих элементах, потерянные ссылки в сборках и локальные рабочие области, которые безвозвратно не синхронизированы с сервером. (т.е. что произойдет, когда разработчик зарегистрирует некоторые ожидающие изменения?) Если вы хотите откатить все назад, восстановите резервную копию на уровне SQL. - person Warren Rumak; 10.08.2012
comment
Для нас сработало идеально, так как у нас была разработанная функциональность, а затем, после еще 10 наборов изменений, было решено удалить эту функциональность. Это позволяет вам откатывать только определенные наборы изменений. Фантастика! - person Neville; 03.04.2013
comment
@WarrenRumak Разве это не то, что должен отслеживать TFS (я полагаю, это можно сделать с помощью внешних ключей или чего-то еще). Что касается ожидающих изменений, возможно, поле блокировки. - person samis; 17.11.2017

Бонусный вопрос: кто-нибудь знает, можем ли мы получить более надежную поддержку отката в VS2010?

да. В отличие от Power Tools, код которого напрямую связан с существующим клиентским API 2008 года, TFS 2010 имеет новый API для выполнения откатов непосредственно на сервере. Это делает их намного быстрее и надежнее, добавляя функциональные возможности, которые вообще были невозможны в 2008 году, такие как откат истории слияний.

person Richard Berg    schedule 18.02.2010

Из статьи MSDN Как откатить набор изменений ( VS2008, хотя доступны и другие версии)

Чтобы вернуться к более ранней версии файла

  1. В обозревателе системы управления версиями щелкните правой кнопкой мыши файл, для которого требуется выполнить откат, и выберите команду Получить конкретную версию. Появится диалоговое окно «Получить».
  2. В разделе Тип щелкните Набор изменений.
  3. В разделе «Набор изменений» щелкните многоточие (…).
  4. В диалоговом окне «Найти наборы изменений» либо используйте значения по умолчанию, либо укажите критерии поиска, а затем нажмите «Найти».
  5. В разделе «Результаты» щелкните набор изменений, содержащий версию, к которой вы хотите вернуть файл, а затем нажмите кнопку «ОК».
  6. В диалоговом окне «Получить» установите флажок «Перезаписывать незарегистрированные файлы, доступные для записи», а затем нажмите «Получить». Более ранняя версия файла копируется в вашу локальную рабочую папку.
  7. В обозревателе системы управления версиями щелкните файл правой кнопкой мыши и выберите команду Извлечь для редактирования.
  8. В диалоговом окне «Извлечь» нажмите «Извлечь».
  9. В обозревателе системы управления версиями еще раз щелкните файл правой кнопкой мыши и выберите команду Зарегистрировать ожидающие изменения.
  10. В диалоговом окне «Вернуть — исходные файлы» щелкните файл, а затем нажмите «Вернуть». Появится диалоговое окно «Разрешить конфликты» с сообщением о том, что файлы не были возвращены, поскольку в двух версиях есть конфликтующие изменения.
  11. В окне сообщения нажмите OK. Появится окно Ожидающие изменения – Конфликты.
  12. (Необязательно) На панели инструментов окна «Ожидающие изменения» нажмите «Сравнить локальное с серверным». Серверная и локальная копии отображаются рядом, так что вы можете проверить свое решение, прежде чем откатить изменения.
  13. В окне Ожидающие изменения нажмите Сохранить локальную версию.
  14. В обозревателе системы управления версиями щелкните файл правой кнопкой мыши и выберите команду Зарегистрировать ожидающие изменения.
  15. В диалоговом окне «Вернуть — исходные файлы» нажмите «Вернуть».
person John MacIntyre    schedule 03.02.2011

В Visual Studio 2013 это стало проще. Для отката сделайте следующее:

  1. В Source Control Explorer выберите решение/проект.
  2. Щелкните правой кнопкой мыши и выберите "Просмотреть историю".
  3. В представлении истории выберите набор изменений, который вы хотите откатить.
  4. Щелкните правой кнопкой мыши и выберите Просмотреть сведения о наборе изменений. Откроется Team Explorer.
  5. В Team Explorer нажмите "Откатить":
    Team Explorer
  6. Чтобы сделать откат постоянным, вам необходимо зарегистрироваться сейчас. Или вы можете внести изменения в откатную версию, а затем зарегистрироваться.
person Matt    schedule 02.07.2015