Dav*_*eau 56 mercurial branch rebase
我想将变更集从一个分支移动到另一个分支.基本上,我目前有:
A -> B -> C -> D # default branch
Run Code Online (Sandbox Code Playgroud)
而且我要:
A # default branch
\-> B -> C -> D # some_new_branch
Run Code Online (Sandbox Code Playgroud)
其中some_new_branch尚不存在.我习惯了git,所以我想我错过了一种简单的"mercurial"方式.
Mar*_*nen 69
一种方法是导出B,C,D的补丁; 更新到A; 科; 应用补丁:
hg export -o patch B C D
hg update A
hg branch branchname
hg import patch
Run Code Online (Sandbox Code Playgroud)
要从默认分支中删除B,C,D,请使用mq extension strip命令.
使用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
Run Code Online (Sandbox Code Playgroud)
没有评论:
hg qimport -r B:D
hg qpop -a
hg branch some_new_branch
hg qpush -a
hg qfinish -a
Run Code Online (Sandbox Code Playgroud)
替代移植或补丁,你可以使用移植.
hg update A
hg branch branchname
hg graft -D "B:D"
hg strip B
Run Code Online (Sandbox Code Playgroud)
请注意,改变历史是不好的做法.只有在尚未推动时才应该剥离.否则,您仍然可以撤消更改.
| 归档时间: |
|
| 查看次数: |
21767 次 |
| 最近记录: |