53

我正在开发一个使用 VSTS 2008 的大型项目的子模块。

我需要将模块回滚到早期版本(之前大约 4 次签入)。我尝试在 Visual Studio UI 中执行此操作,最后意识到没有回滚选项。

经过一番研究,我确定有一个电动工具下载,声称通过命令行工具支持回滚。但是,它似乎几乎没有文档。

谁能逐步描述如何在VS2008中回滚到以前的版本?(使用电动工具或其他方式)。

额外的问题——有人知道我们是否会在 VS2010 中获得更强大的回滚支持?

4

7 回答 7

40

右键单击源代码管理资源管理器中的文件夹。选择获取特定版本。选择您想要获取的版本(通过变更集、日期、标签等)。

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

于 2010-02-16T22:23:16.247 回答
35

幸运的是,这在 TFS 2012 中变得更加容易。现在 GUI 提供了一个回滚选项。

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

要回滚到特定版本:

  1. 在源代码管理资源管理器中,选择一个项目,打开其快捷菜单,然后选择回滚。
  2. 在回滚对话框中,选择回滚到特定版本。

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

于 2013-03-21T08:43:28.743 回答
12

一种方法,但我不觉得它很漂亮.. 打开 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
于 2011-04-01T07:28:30.333 回答
11

2011年8 月的 TFS Power Tools在 Visual Studio 2010 UI 中添加了完整的回滚支持。

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

此功能也包含在 TFS 2012 中。

于 2011-08-24T15:50:35.970 回答
6

额外的问题——有人知道我们是否会在 VS2010 中获得更强大的回滚支持?

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

于 2010-02-18T05:17:40.823 回答
6

来自 MSDN 文章How to: Roll Back a Changeset (VS2008 尽管其他版本可用)

恢复到文件的早期版本

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

Visual Studio 2013中,这变得更容易了。要回滚,请执行以下操作:

  1. Source Control Explorer中,选择解决方案/项目
  2. 右键单击,然后选择“查看历史记录”
  3. 在历史视图中,选择要回滚的变更集
  4. 右键单击,然后选择查看变更集详细信息。这将打开团队资源管理器。
  5. 在团队资源管理器中,单击“回滚”
    团队资源管理器
  6. 要使回滚永久化,您需要立即签入。或者您可以对回滚的版本进行更改,然后签入。
于 2015-07-02T09:06:58.127 回答