如何回滚TFS签到?

时间:2008-08-28 15:33:05

标签: visual-studio-2008 version-control tfs rollback

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

选项1:获取先前版本

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

    1. 下载Team Foundation Power Tools
    2. 从cmd行发出回滚命令
    3. 失败 - 如果还有其他待处理的更改,它将无效
    4. 选项3:手动撤消更改

      1. 手动撤消我的更改,然后提交新的更改集
      2. 问题

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

17 个答案:

答案 0 :(得分:63)

  1. 下载并安装Team Foundation Power Tools
  2. 打开Visual Studio命令提示符
  3. 导航到TFS映射到的文件系统上的目录。如果您不这样做,当您尝试回滚时,您将收到“无法确定工作区”错误
  4. 确保其他所有内容都已签入或搁置
  5. 运行tfpt rollback以显示界面。
  6. 选择要回滚的更改集
  7. 签入您回滚的文件的新版本
  8. 该工具的一大缺点是它需要在合并之前刷新工作区中的所有内容。我通过为回滚创建一个新的工作区来解决这个问题,该回滚直接映射到受影响文件所在的源树中的位置。

    如果您需要帮助来确定要回滚的更改集,我会发现免费Team Foundation Side Kicks加载项中的代码审核工具非常有用。

答案 1 :(得分:24)

您的解决方案#1将起作用: 1.手动获取每个文件的先前版本

  1. 退房编辑

  2. 检查文件并在出现提示时忽略服务器更改。

  3. 你失败的原因是你必须拥有 “在结帐时获取项目的最新版本”选项已打开。 通过转到工具...选项...源控制... Visual Studio Tema Foundation Server并取消选中“在签出时获取项目的最新版本”来关闭此选项

    干杯

答案 2 :(得分:18)

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

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]]

答案 3 :(得分:14)

在TFS 2010版本控制中,您有两个回滚(还原)变更集的选项。第一个选项是使用用户界面(如果您安装了最新版本的TFS 2010 Power Tools)。

Rollback Changeset in UI for TFS 2010

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

tf.exe rollback

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

答案 4 :(得分:14)

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

  1. 查看项目
  2. 获取旧版本的特定版本
  3. 签入(忽略“警告服务器版本较新”对话框)或在“待定更改”对话框的“冲突”部分中,通过保留本地版本来解决冲突。
  4. 即使您在结帐时设置了最新信息,这也会有效。

答案 5 :(得分:5)

作为参考,如果您使用的是 TFS 2010 ,则此处是指向Rollback Command (Team Foundation Version Control)手册的链接。

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

tf rollback /changeset:C12345

其中12345是您的变更集编号。在此之后,它将显示它所执行操作的日志,并且您将必须解决合并冲突。

答案 6 :(得分:4)

啊,刚刚发现这个CodePlex Article on using TFPT.exe(电动工具)来回滚变更集。

希望这可以帮助你。

答案 7 :(得分:4)

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

要回滚更改:

  1. 查看您想要的任何特定版本的更改
  2. 编辑 - >选择全部 - >复制文件中的文字
  3. 检查服务器上文件的任何版本
  4. 粘贴文件并签入。
  5. 现在还可以保存回滚之前的所有中间变更集!真是太棒了!

答案 8 :(得分:1)

我认为Team Foundation Power Tools是最佳选择。如果有挂起的更改,您可以将它们移动到shelveset,然后在运行rollback命令之前撤消或检入所有挂起的更改。有关详细信息,请参阅http://www.codeplex.com/VSTSGuidance/Wiki/View.aspx?title=How%20to%20undo%20a%20check-in&referringTitle=Source%20Control%20Practices%20at%20a%20Glance

答案 9 :(得分:1)

获取特定版本

版本 类型下拉列表中选择键入为更改集

如果您知道此号码,请使用“更改集...”按钮查找您的变更集,或者只需输入。

获得特定的变更集后。

结帐

签入

答案 10 :(得分:1)

使用TFS电动工具是最好的方式{{3p>

答案 11 :(得分:1)

另一个选项是TFSPlus。此Visual Studio Addin将(获取此版本)命令添加到历史窗口中。如果您已检出文件,则会将其替换为该版本。如果您之后签入,则将有效地回滚到该版本。

但它适用于单个文件而不是完整的变更集。

答案 12 :(得分:1)

Ben Scheirman - “变更集详细信息”对话框没有回滚功能。

答案 13 :(得分:1)

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

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

我在哪个网站上下载TFS?

答案 14 :(得分:0)

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

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

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

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

答案 15 :(得分:0)

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

答案 16 :(得分:0)

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

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

在上面的团队资源管理器增强功能中暗示:

  

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