代码之家  ›  专栏  ›  技术社区  ›  Neil Trodden

如何删除Mercurial中应用于错误分支的一些提交,然后在正确的分支上重放它们?

  •  12
  • Neil Trodden  · 技术社区  · 14 年前

    最有效的方法是采取这两个提交,去掉它们,然后在正确的分支下正确地提交它们(更改尚未推送)

    理想情况下,我们希望能在TortoiseHG中实现这一点,但当然,如果命令行是最好的选择,我们将使用它。

    3 回复  |  直到 14 年前
        1
  •  14
  •   Mark Tolonen    14 年前

    如果历史变化如下:

    @  changeset:   3:9dc681b56325
    |  summary:     file4
    |
    o  changeset:   2:6675b3f86aa7
    |  summary:     file3
    |
    | o  changeset:   1:4a3209ed5b2f
    |/   summary:     file2
    |
    o  changeset:   0:6ab45ac3bd6d
       summary:     file1
    

    以下命令将文件“file4”变更集移动到另一个分支(“file2”头):

    hg qimport -r 3     // convert revision 3 to a patch
    hg qpop             // remove it
    hg update 1         // switch to the other branch head
    hg qpush            // push the change back
    hg qfin -a          // convert the applied patch back to a changeset
    

    @  changeset:   3:3faa754edb0b
    |  summary:     file4
    |
    | o  changeset:   2:6675b3f86aa7
    | |  summary:     file3
    | |
    o |  changeset:   1:4a3209ed5b2f
    |/   summary:     file2
    |
    o  changeset:   0:6ab45ac3bd6d
       summary:     file1
    

    请注意,由于变更集现在有不同的父级,rev3的变更集散列发生了更改。更高版本的TortoiseHg也支持MQ扩展。

        3
  •  2
  •   Vadim Kotov First Zero    7 年前

    在这种情况下,使用 hg rebase .

    https://www.mercurial-scm.org/wiki/RebaseExtension