如何将子分支提升为 Team Foundation Server 中的主干分支

How to promote a child branch as the Trunk branch in Team Foundation Server

在 Team Foundation Server 中,我们有几个子分支和一个主干分支。但是现在我们需要提升一个子分支为Trunk分支,并丢弃当前的Trunk分支。此外,我们需要维护之前的 Trunk 分支和子分支的历史记录。

PS: 由于整个项目的巨大冲突,我们无法合并当前的主干分支和子分支。

请同时查看视觉表示:

即使不知道整个上下文,这在您的环境中看起来也不是一个好的分支策略。

您想重新parent到其他分支,您必须先设置两个分支之间的关系。

唯一的解决办法是无基合并:tf merge /baseless之后,您将在对话框中看到新的目标分支。更多详细信息和步骤请参考此博客:Reparent of a TFS Source Controlled Branch.

你也可以看看我在这个问题中的回复:TFS reparent to be a grandchild

We cannot merge the current Trunk branch and child branch due to huge conflicts all over the project.

在无基础合并期间实际上没有更新 child 分支上的任何文件,使用 /discard 开关设置 ,允许我们创建分支之间的关系,不修改 child 分支并在它们之间没有未决合并的情况下开始关系:

tf merge $/Path/To/NewParent $/Path/To/Child /baseless /discard /recursive

然后您可以简单地 re-parent child 分支到新的 parent 分支。


更新

如果您只想用 child 分支替换 Trunk code.It 无法简单地通过合并过程实现此目的。例如,在合并过程中,我们不能删除任何仅存在于主干分支中的文件。 (来自 child → 主干)

作为解决方法,您可以先 删除 主干分支中的所有 codes/files,然后将 child 分支合并回主干。在此之后,Trunk分支将只有child个分支代码。

如果你仍然需要主干中的旧代码,在删除文件之前,你可以创建一个新的分支调用"old trunk",将主干中的代码合并到它并设为只读以保持跟踪。