将子分支改为其祖先分支的父分支

6
我有以下分支结构:
- Main
   |- Release 1
      |- Release 1.1
   |- Release 2

我想将版本1.1的父分支改为“主分支”,以便它看起来像:

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

我想这样做是因为很多变更集需要从 Main 合并到 Release 1.1,但不需要合并到 Release 1。
我一直在尝试使用以下命令进行从 Main 到 Release 1.1 的无基础合并:
tf merge /recursive /baseless $/Main $/Releases/Release1.1

它运行得很好,一旦它被检入,我就可以将Release 1.1重新父合并到Main。

但是问题是,这个命令会合并来自Main的所有内容,我只想创建一个合并关系。我不想将Main中的所有内容合并到Release 1.1中,因为与此同时,其他分支的许多其他更改也已经发生。

是否有办法实现这一点,还是将来的所有变更集每次都需要进行基于基线的合并?


尝试移除/recursive,然后合并根文件夹,这样你就可以挑选想要合并到main的变更集了。 - James Reed
2个回答

5
根据James Reed的评论,创建两个分支之间的合并关系最清晰的方法是简单地删除/recursive参数:
tf merge /baseless $/Main $/Releases/Release1.1

合并后,只会包含目标分支的根文件夹,你可以将其直接提交,无需挑选其他修改集合。

4
仅创建关系(而不是合并所有内容),我们需要执行从父分支到潜在子分支的基于选择性的无基础合并,通过传递所选的变更集编号。可以通过按照博客文章中提到的以下步骤通过GUI实现: http://roadtoalm.com/2012/09/19/reparent-of-a-source-controlled-branch-why-and-how/ 尽管此博客谈论了重新定位,其中我们将所有更改从潜在父分支合并到子分支...但有时我们不需要新父分支中的所有更改。那么我们该怎么办呢?想法是继续选择所有更改并将它们合并到子分支,然后撤消不需要的挂起更改。一旦删除了所有不需要的更改,请继续检入。然后按照博客的说明,我们需要将重新定位选项设置为新父级。我知道这不是一个干净的方法,但这可行!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接