Merge 在不重做合并的情况下更改合并的分支?

Merge 在不重做合并的情况下更改合并的分支?,merge,mercurial,Merge,Mercurial,如果有人将分支B合并到分支A中,但打算将A合并到B中(这样提交将在分支B上进行),有没有一种方法可以用于将该合并(及其所有子代)合并到分支B中?除了重新进行合并,这是一项相当大的工作。下面的方法应该可以解决您的问题,但不是真正的“干净” 更新到分支B(就在合并之前) 开始与分支a的新合并。为了避免任何交互,可以使用“hg merge--tool internal:local”。实际合并并不重要,因为您将使用上一次合并的结果 还原到上一个合并:hg Revert--all-r旧的\u合并\u变更集

如果有人将分支B合并到分支A中,但打算将A合并到B中(这样提交将在分支B上进行),有没有一种方法可以用于将该合并(及其所有子代)合并到分支B中?除了重新进行合并,这是一项相当大的工作。

下面的方法应该可以解决您的问题,但不是真正的“干净”

  • 更新到分支B(就在合并之前)
  • 开始与分支a的新合并。为了避免任何交互,可以使用“hg merge--tool internal:local”。实际合并并不重要,因为您将使用上一次合并的结果
  • 还原到上一个合并:
    hg Revert--all-r旧的\u合并\u变更集
  • 提交合并
  • 使用“hg rebase”将所有后续提交移动到正确的分支上

  • 假设您刚刚提交了合并,或者如果没有提交,则合并更改集为1。他没有孩子,只有两个孩子。是工作目录的父目录,则:

    hg branch B --force
    hg commit --amend
    

    与其复制周围的内容,您只需将--all-r还原为旧的合并,它可以正确跟踪添加/删除的文件。哦,是的,这是一个非常好的观点,我不知道为什么我没有想到这一点:-)我将更新我的答案以改进它。谢谢