将子分支重新归属于其父母

时间:2014-03-23 21:13:52

标签: tfs merge branch reparenting baseless-merge

我有以下分支结构:

- Main
   |- Release 1
      |- Release 1.1
   |- Release 2

我想将Release 1.1重新发布为Main,所以它看起来像

- Main
   |- Release 1
   |- Release 1.1
   |- Release 2

我想这样做的原因是因为需要将许多变更集从Main合并到1.1版,但合并到版本1

我一直在尝试使用以下命令从Main到Release 1.1进行无基本合并:

tf merge /recursive /baseless $/Main $/Releases/Release1.1

效果很好,一旦签入,我可以将1.1版重新发布到Main。

但事实是,这个命令合并了Main的所有内容,我只是想创建一个合并关系。我不想合并从Main到Release 1.1的所有内容,因为其他分支的许多其他更改同时发生。

有没有办法实现这一目标,还是所有未来的变更集都需要每次都毫无根据地合并?

2 个答案:

答案 0 :(得分:4)

要仅创建关系[并且不合并所有内容],我们需要通过传递选定的变更集编号来执行从Parent到潜在子分支的无基本选择性合并。这可以通过GUI按照博客文章中提到的以下步骤来实现: http://roadtoalm.com/2012/09/19/reparent-of-a-source-controlled-branch-why-and-how/

虽然这篇博客谈到了重新定位,其中我们将所有的变化从潜在的父分支合并到子分支......但是有时我们需要来自新的父分支的所有变更。那我们做什么?我们的想法是继续选择所有更改并将它们合并到子分支,然后撤消对不需要的更改的挂起更改。一旦完成所有不需要的更改,请继续并办理登机手续。然后根据博客我们需要将reparent选项设置为新父级。我知道这不是一个干净的方法,但这有效!

答案 1 :(得分:4)

基于James Reed评论,在两个分支之间创建合并关系的最简洁方法是简单地删除/recursive参数:

tf merge /baseless $/Main $/Releases/Release1.1

然后合并将只包含目标分支根文件夹,您可以在不进行任何其他更改的情况下检入该文件夹,而无需选择更改集。

相关问题