91

我想回滚我最近在 TFS 中所做的更改。在 Subversion 中,这非常简单。然而,在 TFS 中这似乎是一个令人难以置信的头痛:

选项 1:获取先前版本

  1. 手动获取每个文件的先前版本
  2. 查看编辑
  3. 失败 - 结帐(在 VS2008 中)迫使我获取最新版本

选项 2:获取 TFS 电动工具

  1. 下载 Team Foundation 电动工具
  2. 从 cmd 行发出回滚命令
  3. 失败 - 如果有任何其他未决更改,它将不起作用

选项 3:手动撤消更改

  1. 手动撤消我的更改,然后提交一个新的变更集

问题

如何回滚到 TFS 中的先前变更集?

4

17 回答 17

63
  1. 下载并安装Team Foundation Power Tools
  2. 打开 Visual Studio 命令提示符
  3. 导航到 TFS 映射到的文件系统上的目录。如果您不这样做,您将在尝试回滚时收到“无法确定工作区”错误
  4. 确保其他所有东西都已签入或搁置
  5. 运行 tfpt rollback 以调出界面。
  6. 选择要回滚的变更集
  7. 签入您回滚的文件的新版本

该工具的最大缺点是它需要在合并之前刷新工作区中的所有内容。我通过为回滚创建一个新工作区来解决这个问题,该工作区直接映射到源树中受影响文件所在的位置。

如果您需要帮助确定要回滚哪些变更集,我发现免费的Team Foundation Side Kicks插件中的代码审查工具非常有用。

于 2009-03-12T12:35:08.733 回答
24

Your solution #1 will work: 1. manually get prior version of each file

  1. check out for edit

  2. Checkin the file and Ignore server changes when prompted.

The reason why it failed for you is because you must have the "Get latest version of item on check out" option turned on. Turn this option off by going to Tools...Options...Source Control...Visual Studio Tema Foundation Server and unchecking "Get latest version of item on check out"

Cheers

于 2008-12-05T14:33:19.273 回答
18

回滚已从 tfpt.exe 移至 Team Foundation 版本控制工具 tf.exe。

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]]
于 2011-03-18T17:43:28.367 回答
14

在 TFS 2010 版本控制中,您有两个选项可用于回滚(恢复)变更集。第一个选项是使用用户界面(如果您安装了最新版本的TFS 2010 电动工具)。

TFS 2010 UI 中的回滚变更集

另一个选项是使用 TFS 2010 版本控制命令行应用程序:

tf.exe rollback

我在我的博客文章中提供了有关这两种方法的信息: http ://www.edsquared.com/2010/02/02/Rollback+Or+Undo+A+Changeset+In+TFS+2010+Version+Control.aspx

于 2011-08-19T16:11:20.247 回答
14

使您的选项 1 起作用的另一种方法是颠倒步骤的顺序:

  1. 检查项目
  2. 获取特定版本到旧版本
  3. 签入(忽略“警告服务器版本更新”对话框)或在 Pending Changes 对话框的冲突部分通过保留本地版本来解决冲突。

即使您设置了在结帐时获取最新信息,这也将起作用。

于 2009-09-04T00:36:56.953 回答
5

作为参考,如果您使用的是TFS 2010,这里是回滚命令(团队基础版本控制)手册的链接。

要回滚特定的变更集,请转到Visual Studio 命令提示符 (2010),导航到 TFS 工作区目录,然后输入命令:

tf rollback /changeset:C12345

12345您的变更集编号在哪里。在此之后,它将向您显示它所做的日志,您必须解决合并冲突。

于 2011-08-04T11:21:22.737 回答
4

啊,刚刚发现这篇关于使用 TFPT.exe(电动工具)回滚变更集的 CodePlex 文章。

希望这可以帮助你。

于 2008-08-29T16:25:03.037 回答
4

没有回滚选项实际上是 TFS 的功能;)

要回滚更改:

  1. 查看您想要的任何特定版本的更改
  2. 编辑->全选->复制文件中的文本
  3. 签出服务器上文件的任何版本
  4. 粘贴在文件上并签入。

现在,您在回滚之前的所有中间变更集也都被保存了!多么棒的功能!

于 2010-11-12T20:42:22.897 回答
1

如果您进行了 1 次签入,并且只想撤消它,则它具有与之关联的变更集 #。对有问题的文件夹进行历史记录以查看错误的变更集。打开它以查看详细信息(所有文件已更改等)。

我相信您可以从该屏幕恢复或撤消变更集,但是当我尝试执行此操作时,我的 Visual Studio 刚刚崩溃。/sigh——我绝对分享你的痛苦。

我在这个网站上哪里可以下载 TFS?

于 2008-08-28T15:36:39.600 回答
1

我认为 Team Foundation Power Tools 是可行的方法。如果有待处理的更改,您可以将它们移动到搁置集,然后在运行回滚命令之前撤消或签入所有待处理的更改。有关详细信息,请参阅http://www.codeplex.com/VSTSGuidance/Wiki/View.aspx?title=How%20to%20undo%20a%20check-in&referringTitle=Source%20Control%20Practices%20at%20a%20Glance

于 2008-08-28T17:41:23.967 回答
1

另一种选择是TFSPlus。此 Visual Studio 插件将(除其他外)“获取此版本”命令添加到历史记录窗口。如果您已签出该文件,它将用该版本替换它。如果您之后进行签入,您将有效地回滚到该版本。

It works on individual files instead of complete changesets, though.

于 2009-12-24T15:04:43.747 回答
1

获取特定版本

版本 类型下拉列表中选择类型作为变更集

使用 Changeset ... 按钮查找您的 Changeset 或只需输入,如果您知道此号码。

在您拥有特定的变更集之后。

查看

报到

于 2011-01-14T16:59:51.693 回答
1

Ben Scheirman - Changeset Details 对话框没有回滚功能。

于 2009-08-12T18:14:45.753 回答
1

使用 TFS powertools 是最好的方法http://rajputyh.blogspot.com/2008/08/change-set-rollback-using-tfs-power.html

于 2010-07-22T17:49:33.350 回答
0

安装最新版本的 TFS Power Tools(2011 年 8 月),您只需右键单击更改集并选择“回滚整个更改集”。没有比这更容易的了。

它在这里可用:http: //visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f

在上一页的Team Explorer Enhancements下暗示了这一点:

此版本的新功能是 [..] 轻松回滚版本控制中的更改。

于 2011-10-19T02:58:08.343 回答
0

上述解决方案适用于 TFS2008。TFS2010 具有内置的回滚功能。有关详细信息,请参阅本文

于 2011-07-11T21:26:33.410 回答
0

这些解决方案都不适合我 Dave Roberts 的解决方案是最接近我实际工作的解决方案。我没有启用结帐时获取最新版本的项目,但这似乎是一项服务器策略。

我对此的解决方案是检查文件以进行编辑,获取特定版本,然后在检测到冲突时使用合并工具(并手动合并任何更改),以使文件处于原来的状态。

我打算与特定版本进行比较并复制整个文件,然后将其粘贴到旧文件的顶部。

仍然应该有一个更简单的方法来做到这一点!

于 2010-11-03T11:33:12.350 回答