提问人:John Saunders 提问时间:10/20/2011 更新时间:7/29/2014 访问量:2607
如何从层次结构的中间删除分支?
How to Remove a Branch from the Middle of the Hierarchy?
问:
我有一个团队项目,使用 ALM Rangers 分支指南中的“标准”分支模式创建:
创建它后,我发现我只需要“基本”模式。也就是说,我不需要“Service Pack”分支。
有没有办法删除“Service Pack”分支并“修复”层次结构,以便“发布”位于层次结构中的“Main”下?现在,“Service Pack”层次结构中的每个变更集在“Release”层次结构中都有一个相应的变更集,因为“Service Pack”刚刚阻碍了。
答:
不幸的是,TFS 中的分支是老式的(或者,如果你问 Torvalds ;),“像恐龙一样”因为一旦创建,结构就被设置并且无法更改。我相信您必须在 Main 的正下方创建一个新的 Release Branch,然后执行从旧 Release 分支到新 Release 分支的无根据合并。我认为您应该使用合并命令的参数来停止显示“解决冲突”对话框。/noprompt
这将给你带来比实际需要更多的冲突,因为 TFS 不知道要使用哪个祖先。但是,由于你希望从原始 Release 分支中获取所有内容,因此可以使用该命令告诉 TFS 始终获取源分支中的更改。tf resolve /recursive /auto:TakeTheirs
之后,您应该能够删除旧的分支树。
很复杂,但并非不可能。
评论
在类似的情况下,以下内容对我有用
tf merge /baseless /recursive /noprompt /discard $/TFS/Path/To/Release $/TFS/Path/To/Main
然后:
- 删除“Service Pack”分支
- 签入“Main”和“Service Pack”
现在您可以进行从“Release”到“Main”的正常 GUI 合并
注意:正如许多人已经提到的,要小心毫无根据的合并,当被滥用时,它们可能会在以后咬你的珠宝。
好吧,我不知道旧版本的,但至少在 / 中,你可以做:TFS
TFS2012
VS2013
- 来自 Main -> Release 的毫无根据的合并
Source Control Explorer
>Branching and Merging
>Reparent
,选择“主要”(新父级)
做!
评论
最简单的解决方案是不删除或重新设置父级。
Service Pack 分支只是名义上的“Service Pack 分支”。删除“release”分支,并将“service pack branch”重命名为“release”。
评论