How to move some changeset to a new branch in mercurial

后端 未结 4 1642
暗喜
暗喜 2020-12-12 19:13

I want to move a changeset from one branch to another. Basically, I currently have:

A -> B -> C -> D # default branch

And I want:<

相关标签:
4条回答
  • 2020-12-12 19:29

    Alternative to transplant or patch, you could use graft.

    hg update A
    hg branch branchname
    hg graft -D "B:D"
    hg strip B
    

    Note that changing history is bad practice. You should strip only if you haven't pushed yet. Otherwise, you could still backout your changes.

    0 讨论(0)
  • 2020-12-12 19:37

    With Mercurial Queue:

    # mark revisions as draft in case they were already shared
    #hg phase --draft --force B:D
    # make changesets a patch queue commits
    # (patches are stored .hg/patches)
    hg qimport -r B:D
    # pop changesets from current branch
    hg qpop -a
    # 
    hg branch some_new_branch
    # push changesets to new branch
    hg qpush -a
    # and make them commits
    hg qfinish -a
    

    Without comments:

    hg qimport -r B:D
    hg qpop -a
    hg branch some_new_branch
    hg qpush -a
    hg qfinish -a
    
    0 讨论(0)
  • 2020-12-12 19:38

    Sounds a bit like a cherry-pick operation in git. The Transplant Extension may be what you're looking for.

    0 讨论(0)
  • 2020-12-12 19:42

    One way is to export a patch for B,C,D; update to A; branch; apply patch:

    hg export -o patch B C D
    hg update A
    hg branch branchname
    hg import patch
    

    To remove B,C,D from the default branch, use the mq extension's strip command.

    0 讨论(0)
提交回复
热议问题