我可以取消到TFS 2008中的另一个分支吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (42)

假设我的团队中的一些开发人员搁置了他在分支A中所做的更改。并且我正在分支B上工作。我是否可以将其更改分支B取消搁置?(通过GUI或命令提示符)

提问于
用户回答回答于

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 Shelveset Sidekick
  • 该工具出现在VS2010的'工具'下
  • 运行“Shelveset Sidekick”工具,单击搜索以显示搁架
  • 右键单击你的搁架并选择“导出搁架”
  • 保存到空位置,例如 C:\temp\shelveset-name
  • 现在有一个包含JUST新文件的完整目录结构

(注意:导出时没有进度条 - 所以如果你有一个需要很长时间导出的大型shelveset,你只需在Windows资源管理器(文件>属性>大小)中检查文件是否仍然会下降认为它被冻结)。

您现在只需使用Windows资源管理器将它们复制到新分支。

这对我有效:

  • 首先检查整个解决方案(在新分支中)
  • 关闭该解决方案
  • 从VS内脱机TFS(工具来做到这一点) - 请参阅下面为什么这是重要的...
  • 在Windows资源管理器中复制文件。目录结构c:\temp\shelveset-name将不得不重新命名为对应于新的分支。提示:确保你复制到正确的地方!
  • 带上VS在线
  • 它应该找到所有更改并添加新文件
  • 如果它要求你绑定sourcecontrol,那么一定要确认新分支的路径是否正确。
  • 测试 - 然后签入新文件

重要提示:我发现如果你不首先将TFS脱机,那么你将最终得到没有小红色复选标记的任何新文件(来自你的未展开的变更集),并且必须再次排除并包含它们让他们加入。如果任何人有这个问题的替代解决方案,我很想知道 - 刷新似乎没有工作。

扫码关注云+社区