我有一个看起来像这样的分支:
A->B->C->D->...->Z
^
1->2-^
Run Code Online (Sandbox Code Playgroud)
哪里C是2和它的祖先合并.
我现在意识到我不应该合并.我可以回去B嫁接D...... Z但这是很多工作.我可以退出C吗?
当我尝试hg backout --merge C,我得到中止:无法回退合并变更.
这些变化已被推送到中央回购,我不打算修改历史或任何东西,我只想要反过来,2它的祖先回到共同的后代B.
Mar*_*ski 12
假设我们有这个已发布的提交历史(顶部是最新的):
revZ
|
...
|
revD
|
revC <- unwated merge commit (rev2 to revB)
| \
wanted branch -> revB rev2 <- unwanted branch
| |
Run Code Online (Sandbox Code Playgroud)
相反,我们希望有顶级状态,好像我们有这样的历史:
revZ'
|
...
|
revD'
|
wanted branch -> revB rev2 <- unwanted branch
| |
Run Code Online (Sandbox Code Playgroud)
将合并提交(rev4 - rev5)后的历史记录折叠为一个提交
$ hg update -r revC # Update to merge commit
$ hg revert --all -r revZ # revert to the newest commit
$ hg commit -m "collapsed commits" # Create new commit (revTmp1)
revZ
|
...
|
revTmp1 revD
\ /
revC
| \
revB rev2
| |
Run Code Online (Sandbox Code Playgroud)合并后将更改('rev6')复制到所需分支('rev1')
$ hg update -r revB # Update to the last "wanted" commit before merge
$ hg graft -r revTmp1 # Copy changes from revTmp1 (create revTmp2 commit)
revZ
|
...
|
revTmp1 revD
\ /
revTmp2 revC
\ / \
revB rev2
| |
Run Code Online (Sandbox Code Playgroud)创建"退出"提交
$ hg update -r revZ # Update to the top commit
$ hg revert --all -r revTmp2 # Copy state revTmp2
$ hg commit -m "reverted revC merge" # Create revZ' commit
revZ'
|
revZ
|
...
|
revTmp1 revD
\ /
revTmp2 revC
\ / \
revB rev2
| |
Run Code Online (Sandbox Code Playgroud)清理临时提交
$ hg strip revTmp1 revTmp2
revZ' <- reverted revC merge
|
revZ
|
revD
|
revC <- unwated merge commit (rev2 to revB)
| \
wanted branch -> revB rev2 <- unwanted branch
| |
Run Code Online (Sandbox Code Playgroud)有点晚了,但我前一段时间也有同样的情况.这对我很顺利:
hg update -C -r "revision-C"
hg revert --all -r "revision-B"
hg commit -m 'UNDO blah blah whatever the merge did'
hg update -C -r "revision-Z-or-whatever-the-current-head-is"
hg merge -r "the-new-revision-created-in-step-3"
Run Code Online (Sandbox Code Playgroud)
基本上,这正是退出的作用.
免责声明:请注意,如果您将来要再次合并1-> 2分支,您很可能会遇到一些问题.而"一些问题"在这里是一个有点过分的术语.事实上,即使是大问题也可能出现在这种情况下.这种情况很危险,主要是因为这些问题可能会在以后发生并且完全出乎意 强烈建议完全放弃"1"分支以避免这些风险.(另见下面的评论.)
有关详细信息,请参阅Backout wiki页面.
您可以使用 thg backout 工具。
这将创建一个新的头,您需要将其与 Z 合并或重新设置为 Z。
| 归档时间: |
|
| 查看次数: |
7832 次 |
| 最近记录: |