如何在Visual Studio TFS中回滚?

alc*_*cal 50 tfs tfs2008 visual-studio tfs-power-tools

我正在研究一个大项目的一个子模块,使用VSTS 2008.

我需要将模块回滚到早期版本(大约4个签到之前).我尝试在Visual Studio UI中执行此操作,最后意识到无法回滚.

经过一些研究,我确定有一个电动工具下载,声称支持通过命令行工具回滚.但是,似乎几乎没有任何文件.

任何人都可以逐步描述如何在VS2008中回滚到以前的版本?(使用Power Tools或其他方式).

奖金问题 - 任何人都知道我们是否可以在VS2010中获得更强大的回滚支持?

Bre*_*ier 38

在Source Control Explorer中右键单击该文件夹.选择获取特定版本.选择您想要获得的版本(通过变更集,日期,标签等).

编辑:此时您的本地版本将是您想要的版本.检查更改的文件,然后重新检入.这将打开合并向导,它可能会抱怨服务器有一个比你更新的版本.完成向导并按照您希望的方式合并文件(其中一个选项是放弃服务器更改,这听起来像您想要的).在此过程结束时,它可能会告诉您由于合并过程(或某种性质)没有检入任何文件,只需单击"确定"然后再次签入.这应该可以满足您的需求.

  • 如果这真的是答案,对TFS来说很难过. (90认同)
  • 这太可怕了.必须导航到EACH文件并在获取旧版本后检查并重新登录,只是为了还原更改.很高兴我们搬到了SVN. (8认同)
  • 现在有一种更好,更快的方法.看看@Rene的回答.对于较新的TFS和VS,您需要通过源代码管理资源管理器执行此操作,并且只需2个步骤即可立即使用,适用于Changeset中的所有文件.唷! (5认同)
  • 这是一种痛苦,应该有更好的方法. (2认同)
  • 当您想要回滚添加了新文件和/或删除其他文件的文件夹时,此方法也无法正常工作. (2认同)

Ren*_*ené 33

幸运的是,在TFS 2012中,这一点变得更加容易.现在,GUI中有一个Rollback选项.

MSDN提供了有关如何执行此操作以及可用选项的更多信息.以下是MSDN中有关如何回滚到特定版本的文本:

要回滚到特定版本:

  1. 在Source Control Explorer中,选择一个项目,打开其快捷菜单,然后选择Rollback.
  2. 在"回滚"对话框中,选择"回滚到特定版本".

您当然也可以回滚整个变更集或变更集集合.如果您愿意,您还可以轻松回滚到特定时间点.

  • 是的,这比我在解决方案资源管理器中使用回滚要好得多,但每次它只是恢复到最新的TFS文件.您的建议非常简单!这是我认为最新,最好的答案. (2认同)

And*_*nea 12

IS的方式,但我不觉得它漂亮..打开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
Run Code Online (Sandbox Code Playgroud)


War*_*mak 10

2011年8月TFS电动工具添加了完整的回滚支持右到Visual Studio 2010的UI.

下载链接:http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f

此功能也包含在TFS 2012中.

  • 这有效,但我觉得这不是真正的回滚.期望的功能是删除自我们回滚的所有变更集.这只是添加了一个带有回滚内容的新变更集. (2认同)

Ric*_*erg 6

奖金问题 - 任何人都知道我们是否可以在VS2010中获得更强大的回滚支持?

是.与直接针对现有2008客户端API编码的Power Tools不同,TFS 2010具有用于直接在服务器上执行回滚的新API.这使得它们更快,更可靠,同时添加了2008年根本无法实现的功能,例如还原合并历史记录.


Joh*_*yre 6

从MSDN文章如何:回滚变更集 (VS2008,虽然其他版本可用)

要还原为文件的早期版本

  1. 在"源代码管理资源管理器"中,右键单击要回滚的文件,然后单击"获取特定版本".将出现"获取"对话框.
  2. 在"类型"下,单击"更改集"
  3. 在"更改集"下,单击省略号(...).
  4. 在"查找更改集"对话框中,使用默认值或指定搜索条件,然后单击"查找".
  5. 在"结果"下,单击包含要将文件还原到的版本的更改集,然后单击"确定".
  6. 在"获取"对话框中,选中"覆盖未签出的可写文件"复选框,然后单击"获取".该文件的早期版本将复制到您的本地工作文件夹.
  7. 在"源代码管理资源管理器"中,右键单击该文件,然后单击"签出以进行编辑".
  8. 在"签出"对话框中,单击"签出".
  9. 在"源代码管理资源管理器"中,再次右键单击该文件,然后单击"检入待处理的更改".
  10. 在"检入 - 源文件"对话框中,单击该文件,然后单击"检入".将显示"解决冲突"对话框,并显示一条消息说明没有检入任何文件,因为这两个版本的更改存在冲突.
  11. 在消息框中,单击"确定".将显示"待更改 - 冲突"窗口.
  12. (可选)在"待定更改"窗口的工具栏中,单击"将本地比较到服务器".服务器和本地副本并排显示,以便您在回滚更改之前查看您的决定
  13. 在Pending Changes窗口中,单击Keep Local Version.
  14. 在"源代码管理资源管理器"中,右键单击该文件,然后单击"检入待处理的更改".
  15. 在"检入 - 源文件"对话框中,单击"签入".