TFS更改分支父级 - 只显示当前父级和“无父级”选项。

9

我原以为在TFS中的分支重设父级的目的是当我有充分理由时可以设置任何我想要的父分支。

然而,当我尝试将一个特性分支重新归属到另一个发布分支时,弹出的对话框只显示两个选项:

  • 当前父分支
  • "无父分支"

这似乎不是很有用。我是否误解了该功能,还是有什么方法可以将其重新指向其他的分支?

2个回答

9

是的,这是正常现象。通常情况下,你只会看到父分支、“无父分支”和子分支。

如果你想将其重新指向其他分支,你必须先在两个分支之间建立关系。

解决方法是进行无基础合并:tf merge /recursive /baseless new target branch child branch 之后,你就可以在对话框中看到新目标分支了。更多详细信息和步骤,请参考此博客:重新指向 TFS 源控制分支。


哦,这很有趣。我最终进行了无根合并,但我没有意识到在不相关的分支之间进行第一次无根合并然后允许您重新指定父级 - 这就是您所说的吗? - Mr. Boy
1
是的,这就是重点。无基础合并操作只是在两个分支之间建立了一个关系。 - PatrickLu-MSFT
运行上述命令后,它是否应该为每个需要检入的项目生成一个[merge]或[merge,branch]挂起更改? - StingyJack
@StingyJack 是的,这是预期行为,[merge] 状态适用于未更改的文件,但具有合并操作,[merge branch] 代表目标中新添加的项目,从源复制而来。 - PatrickLu-MSFT
2
在建立合并关系时,似乎不适合添加任何新项目或更改任何分支中的项目。只有当我合并变更集时,我才希望影响目标。 - StingyJack

3

正如 @StingyJack 所提到的,我一直在尝试通过创建一个无基础合并关系来重新父项目分支,但是在进行无基础合并时不更新子分支上的任何文件

使用 TF 合并命令,设置 /discard 开关,允许我们在不修改子分支的情况下建立分支之间的关系,并以没有等待合并的关系开始它们之间的关系:

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

你可以将子分支简单地归并到新的父分支中。
(我曾尝试在空格或注释更改之间进行合并,并忽略其余的无基础合并更改,但这并没有创建一个关系来实现重新定义父子关系(每次撤销70,000个更改需要45分钟以上)。)

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