我想回滚一下我最近在TFS中做出的改变.在Subversion中,这非常简单.然而,它似乎是TFS令人难以置信的头痛:
手动获取每个文件的先前版本
退房编辑
失败 - 结账(在VS2008中)迫使我获得最新版本
下载Team Foundation Power Tools
从cmd行发出回滚命令
失败 - 如果有任何其他待定更改,它将无法工作
手动撤消我的更改,然后提交新的更改集
如何回滚到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.
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]]
使您的选项1工作的另一种方法是颠倒步骤的顺序:
检查项目
获取旧版本的特定版本
签入(忽略"警告服务器版本较新"对话框)或在"待定更改"对话框的"冲突"部分中,通过保留本地版本来解决冲突.
即使您在结帐时设置了最新信息,这也可以使用.
在TFS 2010版本控制中,您有两个回滚(还原)变更集的选项.第一个选项是使用用户界面(如果您安装了最新版本的TFS 2010 Power Tools).
另一个选项是使用TFS 2010版本控制命令行应用程序:
tf.exe rollback
我在这里的博客文章中有关于这两种方法的信息:http: //www.edsquared.com/2010/02/02/Rollback+Or+Undo+A+Changeset+In+TFS+2010+Version+Control.aspx
作为参考,如果你正在使用TFS 2010,下面就来链接ROLLBACK命令(Team Foundation版本控制)手册.
要回滚特定的变更集,请转到Visual Studio命令提示符(2010),导航到TFS工作空间目录,然后键入命令:
tf rollback /changeset:C12345
12345
你的变更号码在哪里.在此之后,它将显示它所做的日志,你将必须解决合并冲突.