我有以下分支结构:
- 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
它工作得很好,一旦它被签入,我可以将Release 1.1代表到Main。
但问题是,这个命令合并了Main中的所有内容,我只想创建一个合并关系。我不想把所有的东西从Main版本合并到1.1版本,因为其他分支的许多其他变化已经发生了。
是否有一种方法可以实现这一点,或者所有未来的变更集都需要每次都进行无基础合并?
根据James Reed的评论,在两个分支之间创建合并关系的最干净的方法是简单地删除/recursive
参数:
tf merge /baseless $/Main $/Releases/Release1.1
合并将只包含目标分支根文件夹,您可以在没有任何其他更改的情况下签入,而不必挑选更改集。
为了仅仅创建关系[而不是合并所有内容],我们将需要通过传递选定的更改集编号来执行从父分支到可能的子分支的无根据的选择性合并。这可以通过以下步骤通过GUI实现,正如博客文章中提到的:http://roadtoalm.com/2012/09/19/reparent-of-a-source-controlled-branch-why-and-how/
虽然这个博客讨论的是重新养育,其中我们将所有来自潜在父分支的更改合并到子分支…但是有时我们不需要来自新父分支的所有更改。那我们该怎么办呢?其思想是继续选择所有更改并将它们合并到子分支,然后撤消挂起的更改,以获取不需要的更改。一旦所有不需要的更改都被取消,继续并签入。然后,根据博客,我们需要将reparent选项设置为新的父项。我知道这不是一个干净的方法,但这是有效的!