关于Visual Studio 2008:如何回退TFS签入?

How do I rollback a TFS check-in?

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

选项1:获取先前版本

  • 手动获取每个文件的先前版本
  • 签出进行编辑
  • 失败-结帐(在VS2008中)迫使我获取最新版本
  • 选项2:获取TFS电动工具

  • 下载Team Foundation电动工具
  • 从cmd行发出回滚命令
  • 失败-如果还有其他待处理的更改,它将无法正常工作
  • 选项3:手动撤消更改

  • 手动撤消我的更改,然后提交新的更改集
  • 如何回滚到TFS中的先前变更集?


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

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


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

  • 签出进行编辑

  • 检入文件,并在出现提示时忽略服务器更改。

  • 它对您失败的原因是因为您必须拥有
    启用了"在检出时获取最新版本的项目"选项。
    通过转到工具...选项...源代码控制... Visual Studio Tema Foundation Server并取消选中"在检出时获取最新版本的项目"来关闭此选项

    干杯


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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    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]]

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

    Rollback Changeset in UI for TFS 2010

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

    1
    tf.exe rollback

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


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

  • 签出物品
  • 获取特定版本到旧版本
  • 签入(忽略"警告服务器版本较新"对话框),或者在"待更改"对话框的"冲突"部分上,通过保留本地版本来解决冲突。
  • 即使您设置了"在结帐时获取最新信息"也可以使用。


    作为参考,如果您使用的是TFS 2010,则这是"回滚命令"(Team Foundation版本控制)手册的链接。

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

    1
    tf rollback /changeset:C12345

    其中12345是您的变更集编号。此后,它将向您显示其操作的日志,并且您必须整理合并冲突。


    啊,刚刚找到此CodePlex文章,内容涉及使用TFPT.exe(强大工具)回滚变更集。

    希望这可以帮助你。


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

    要回滚更改:

  • 查看所需的任何特定版本的更改
  • 编辑->全选->复制文件中的文本
  • 检出服务器上文件的任何版本
  • 粘贴文件并签入。
  • 现在,您还可以保存回滚之前的所有中间变更集!多么伟大的功能!


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


    我认为Team Foundation Power Tools是必经之路。如果有暂挂的更改,则可以将它们移到架子集,然后撤消或签入所有暂挂的更改,然后再运行rollback命令。有关更多信息,请参阅http://www.codeplex.com/VSTSGuidance/Wiki/View.aspx?title=How%20to%20undo%20a%20check-in&referringTitle=Source%20Control%20Practices%20at%20a%20Glance。


    Ben Scheirman-"更改集详细信息"对话框不具有回滚功能。


    如果您进行了1个签入,而您只想撤消它,则该签入具有一个变更集#。对相关文件夹进行历史记录,以查看错误的变更集。打开它可以查看详细信息(所有文件都已更改,等等)。

    我相信您可以从该屏幕还原或撤消更改集,但是当我尝试执行此操作时,Visual Studio刚崩溃。 /叹气-我一定会分享你的痛苦。

    我在哪里可以在此站点上下调TFS?


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

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


    获取特定版本

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

    如果您知道此号码,请使用Changeset ...按钮查找您的Changeset或直接键入。

    获得特定的变更集之后。

    退房

    报到


    安装最新版本的TFS Power Tools(2011年8月),您可以右键单击更改集,然后选择"回滚整个更改集"。没有比这容易的多了。

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

    在上一页的"团队资源管理器增强"下得到了提示:

    New in this release is the ability to [..] easily rollback changes in version control.


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


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

    我的解决方案是检出文件以进行编辑,获取特定版本,然后在检测到冲突时使用合并工具(并手动合并所有更改),以使文件保持原状。

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

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


    推荐阅读