让我们假设我团队中的一些开发人员搁置他在分支A中所做的更改。我正在分支B工作。我可以将他的更改取消分支B吗? (通过GUI或命令提示符)
答案 0 :(得分:128)
Visual Studio Power Tools应该允许你这样做。
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/"
答案 1 :(得分:34)
替代tfpt解决方案,避免必须手动合并每个文件
tfs power tool的问题是you're doing a 'baseless merge' so have to confirm every file。我有超过800个文件的搁置,我从不相信“自动合并”按钮,并且不想依次浏览每个文件 - 所以我必须找到另一种方式!
C:\temp\shelveset-name
(注意:导出时没有进度条 - 所以如果你有一个需要很长时间才能导出的大型shelveset,你只需要在Windows资源管理器(文件>属性>大小)中检查文件是否仍然存在如果你认为它被冻结了。
您现在只需使用Windows资源管理器将它们复制到新分支。
这对我有用:
c:\temp\shelveset-name
中的目录结构以对应于新分支。 提示:请务必将其复制到正确的位置!!! 重要提示:我发现,如果您没有先将TFS脱机,那么您最终会得到任何新文件(来自您的未更改组)并且没有一点红色复选标记,您将不得不排除再次包含它们以使它们添加。如果有人有这个问题的替代解决方案,我很想知道 - 刷新似乎不起作用。
答案 2 :(得分:1)
货架信息包括其前往的特定路径。不幸的是,我不知道任何自动的方式来取消搁置到它所搁置的任何位置以外的任何位置。我想要这样做的时候我必须检查新分支中的等效文件,从旧分支中取消,然后手动复制文件。
编辑:嗯,我想我是在努力做到这一点。我将不得不尝试Curt的解决方案。 :)答案 3 :(得分:0)
我花了很多时间来完成这项任务,而且我还有很多问题需要克服。这是可能的,但这里几乎没有什么问题和规则可以避免这些问题
错误:
无法确定工作区
通过从源分支根文件夹运行命令解决了此特定问题。这与SO上的一些答案相反,他们说使用“目标”分支 - 不,使用“来源”:
cd [your !!source!! branch root]
tfpt unshelve /migrate /source:"$/MyCollection/Development/Maint1.1" /target:"$/MyCollection/Development/Maint1.2" "myShelveset;UserName"
此后出现第二个问题。似乎它无法连接到TFS服务器。我意识到,我安装了多个VS并连接到不同的TFS服务器。我使用VS12,我有工作区和服务器连接。但我没有意识到需要在VS13中复制相同的连接才能使TFPT2013正常工作。它连接到相同的服务器和工作区。
我也尝试过使用TFPT2015,但我安装了它并没有安装TFPT.exe因此它没用。所以我尝试从TFPT2013到TFS2015,它适用于这个特定的命令。我想知道,为什么不,如果VS12 / 13对TFS2015工作正常?
总结
答案 4 :(得分:0)
以下步骤可用于小型架子集(约20个文件或更少)。