【问题标题】:Reparenting a child branch to its grand-parent将子分支重新分配给其祖父母
【发布时间】:2014-05-01 02:04:18
【问题描述】:

我有以下分支结构:

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

我想将 Release 1.1 重新设置为 Main 以使其看起来像

- 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 的变更集

标签: tfs merge branch reparenting baseless-merge


【解决方案1】:

根据 James Reed 的评论,在两个分支之间创建合并关系的最简洁方法是简单地删除 /recursive 参数:

tf merge /baseless $/Main $/Releases/Release1.1

然后,合并将仅包含目标分支根文件夹,您无需任何其他更改即可签入该文件夹,而无需挑选更改集。

【讨论】:

    【解决方案2】:

    为了仅仅创建关系[而不是合并所有内容],我们需要通过传递选定的变更集编号来执行从父分支到潜在子分支的毫无根据的选择性合并。这可以按照博文中提到的以下步骤通过 GUI 实现: http://roadtoalm.com/2012/09/19/reparent-of-a-source-controlled-branch-why-and-how/

    虽然此博客讨论了重新父级,其中我们将潜在父分支的所有更改合并到子分支……但有时我们不需要新父分支的所有更改.那我们怎么办?我们的想法是继续选择所有更改并将它们合并到子分支,然后撤消不需要的更改的挂起更改。一旦所有不需要的更改都取消完成,请继续并签入。然后根据博客,我们需要将 reparent 选项设置为新的父级。我知道这不是一个干净的方法,但这很有效!

    【讨论】:

      猜你喜欢
      • 2012-10-17
      • 1970-01-01
      • 2019-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多