【问题标题】:Changing what branch a merge is on without redoing the merge?在不重做合并的情况下更改合并所在的分支?
【发布时间】:2015-01-05 22:38:03
【问题描述】:

如果有人将分支 B 合并到分支 A 中,但打算将 A 合并到 B 中(以便提交将在分支 B 上),我可以使用一种方法来获得该合并(以及所有它的后代)进入B分支?除了重做合并,这是一项相当大的工作量。

【问题讨论】:

    标签: merge mercurial


    【解决方案1】:

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

    1. 更新到分支 B(就在合并之前)。
    2. 开始与分支 A 的新合并。为避免任何交互,您可以使用“hg merge --tool internal:local”。实际的合并无关紧要,因为您将使用之前合并的结果。
    3. 恢复到之前的合并:hg revert --all -r OLD_MERGE_CHANGESET
    4. 提交合并。
    5. 使用“hg rebase”将所有以后的提交移到正确的分支之上。

    【讨论】:

    • 您可以revert --all -r 到旧合并中,而不是复制内容,它可以正确跟踪添加/删除的文件。
    • 哦,是的,这是一个很好的观点,我不知道为什么我没有想到这一点:-) 我会更新我的答案以改进它。谢谢!
    【解决方案2】:

    假设您刚刚提交了合并,或者如果没有提交,则合并变更集 1. 没有子级且 2. 是您工作目录的父级,那么:

    hg branch B --force
    hg commit --amend
    

    【讨论】:

      猜你喜欢
      • 2022-01-13
      • 2011-09-29
      • 2018-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-02
      • 2017-03-24
      相关资源
      最近更新 更多