Mercurial摆脱糟糕的合并
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mercurial摆脱糟糕的合并相关的知识,希望对你有一定的参考价值。
我刚刚将分支A合并到B中,由于某种原因合并不顺利。我希望将B恢复到合并之前的状态,然后重新尝试,就像之前从未发生过一样。我在考虑做的事情
hg clone myrepo newrepo -r A -r 12345
其中12345是B的错误合并提交之前的修订号
我认为这有效,但我有很多其他分支(大多数分支使用commit --close-branch关闭),这会将这些分支恢复到非活动状态。
有没有办法克隆除修订版123456之外的所有东西? (其中123456是B上的错误提交)
假设您没有将合并变更集推送到任何公共位置,最简单的解决方案是使用Mercurial Queues(即hg strip
)扩展附带的mq
命令。
来自wiki:
hg strip rev
从存储库中删除了rev
修订版及其所有后代。要删除不需要的分支,您可以指定特定于该分支的第一个修订。默认情况下,hg strip
将在.hg/strip-backup/
目录中放置备份。如果条带被证明是个坏主意,你可以用hg unbundle.hg/strip-backup/filename.
恢复
它可能不如hg rollback那么好,但通常我做的是更新到头A,在前一个头B中合并,检查我这次是否正确,然后dummy-merge远离坏合并。
我希望我能正确理解你的情况。如果我是你应该能够在合并之前更新到B的修订版,给该修订版本一个新的分支名称,将A合并到其中,然后继续。您可能希望将原始B分支标记为已关闭。
$ hg up 12345 #12345 is the revision of B prior to the merge
$ hg branch B-take2
$ hg merge A
$ hg commit -m 'merge A in to B-take2'
$ hg up B
$ hg commit --close-branch -m 'mark original B branch as closed'
使用hg rollback命令为时已晚?如果是这样,请尝试使用hg backout命令。
以上是关于Mercurial摆脱糟糕的合并的主要内容,如果未能解决你的问题,请参考以下文章