【问题标题】:TFS reparent branch - only options shown are current parent and "no parent"TFS reparent 分支 - 仅显示的选项是当前父级和“无父级”
【发布时间】:2019-07-08 18:37:34
【问题描述】:

我认为在 TFS 中重新设置分支的意义在于,当我有充分的理由时,我可以设置任何我希望的父分支。

但是,当我考虑将功能分支重新设置为属于不同的发布分支时,显示的对话框仅包含两项:

  • 当前父分支
  • “没有父母”

这似乎不是很有用。我是否误解了该功能,或者我可以做些什么来重新考虑其他分支?

【问题讨论】:

    标签: tfs


    【解决方案1】:

    是的,这是正常现象。通常,您只会看到父分支,“无父”和子分支。

    如果你想reparent到其他分支,你必须先设置两个分支之间的关系。

    解决方案是毫无根据的合并:tf merge /recursive /baseless new target branch child branch 之后,您将在对话框中看到新的目标分支。更多详细信息和步骤请参考此博客:Reparent of a TFS Source Controlled Branch.

    【讨论】:

    • 哦,这很有趣。我最终做了毫无根据的合并,但我没有意识到在不相关的分支之间进行了第一次毫无根据的合并,然后允许你重新父级 - 这 你在说什么?
    • 是的,这就是重点。 baseless merge的操作只是设置了两个分支之间的关系。
    • 是否应该为每个项目生成一个 [merge] 或 [merge,branch] 挂起的更改,需要在运行上述命令后签入?
    • @StingyJack 是的,这是预期的行为,未更改文件的 [merge] 状态但 有合并操作,[merge branch] 代表目标中的新添加项,从源代码复制。
    • 在建立合并关系时,添加任何新项目或更改任一分支中的任何项目似乎都不合适。只有当我合并变更集时,我才会期望影响目标。
    【解决方案2】:

    正如@StingyJack 所提到的,我一直在尝试通过与无根据的合并创建关系来重新建立一个分支,但在无根据的合并期间实际上没有更新子分支上的任何文件。

    使用TF merge command/discard 开关集,允许我们在分支之间创建关系,而无需修改子分支并启动关系,并且之间没有挂起的合并他们:

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

    然后您可以简单地将子分支重新设置为新的父分支。

    (我首先尝试合并空格或注释更改,并忽略其余毫无根据的合并更改,但这并没有创建启用重新父级的关系(并且每次撤消 70 000 次更改需要 45 分钟以上))。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-17
      • 2016-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多