让我们假设我的团队中的一些开发人员搁置了他在分支A中所做的更改.我正在分支B工作.我可以将他的更改取消分支B吗?(通过GUI或命令提示符)
在Visual Studio的电动工具应该让你这样做.
C:\src\2\Merlin\Main>tfpt unshelve /? tfpt unshelve - Unshelve into workspace with pending changes Allows a shelveset to be unshelved into a workspace with pending changes. Merges content between local and shelved changes. Allows migration of shelved changes from one branch into another by rewriting server paths. Usage: tfpt unshelve [shelvesetname[;username]] [/nobackup] [/migrate /source:serverpath /target:serverpath] shelvesetname The name of the shelveset to unshelve /nobackup Skip the creation of a backup shelveset /migrate Rewrite the server paths of the shelved items (for example to unshelve into another branch) /source:serverpath Source location for path rewrite (supply with /migrate) /target:serverpath Target location for path rewrite (supply with /migrate) /nobackup Skip the creation of a backup shelveset
例如,要将Branch1上创建的名为"Shelve Set Name"的搁架集合并到Branch2,请使用以下命令:
>tfpt unshelve "Shelve Set Name";domain\userName /migrate /source:"$/Project/Branch1/" /target:"$/Project/Branch2/"
tfpt的替代解决方案,可避免必须手动合并每个文件
tfs电源工具的问题在于您正在进行"无基础合并",因此必须确认每个文件.我有超过800个文件的搁置,我从不相信'自动合并'按钮,并且不想依次浏览每个文件 - 所以我必须找到另一种方式!
下载并安装TFS Shelveset Sidekick.
该工具显示在VS2010的"工具"下
运行"Shelveset Sidekick"工具,单击"搜索"以显示搁置集
右键单击您的shelveset并选择"Export Shelveset"
保存到空白位置,例如 C:\temp\shelveset-name
现在有一个包含JUST新文件的完整目录结构
(注意:导出时没有进度条 - 所以如果你有一个需要很长时间才能导出的大型搁置集,你只需要在Windows资源管理器(文件>属性>大小)中检查文件是否仍然存在,如果你认为它冻结了).
您现在只需使用Windows资源管理器将它们复制到新分支.
这对我有用:
首先检查整个解决方案(在新分支中)
关闭该解决方案
从VS中取出TFS离线(工具执行此操作) - 请参阅下面的重要原因...
在Windows资源管理器中复制文件.c:\temp\shelveset-name
必须重命名目录结构以对应于新分支.提示:确保复制到正确的位置!
在线提供VS.
它应该找到所有更改并添加新文件
如果它要求您绑定sourcecontrol,请确保验证新分支的路径是否正确.
测试 - 然后检查新文件
重要提示:我发现,如果你没有先将TFS脱机,那么你最终会得到任何新的文件(来自你的unshelves变更集)显示没有一点红色复选标记,你将不得不排除并再次包含它们让他们添加.如果有人有这个问题的替代解决方案,我很想知道 - 刷新似乎不起作用.