Mercurial摆脱糟糕的合并

Dav*_*iov 5 mercurial

我刚刚将分支A合并到B中,由于某种原因合并不顺利.我希望将B恢复到合并之前的状态,然后重新尝试,就像之前从未发生过一样.我在考虑做的事情

hg clone myrepo newrepo -r A -r 12345
Run Code Online (Sandbox Code Playgroud)

其中12345是B的错误合并提交之前的修订号

我认为这有效,但我有很多其他分支(大多数分支使用commit --close-branch关闭),这会使这些分支回到非活动状态.

有没有办法克隆除修订版123456之外的所有东西?(其中123456是B上的错误提交)

Tim*_*gan 10

假设您尚未将合并变更集推送到任何公共位置,最简单的解决方案是使用hg stripMercurial Queues(ie mq)扩展附带的命令.

来自维基:

hg strip revrev从存储库中删除修订及其所有后代.要删除不需要的分支,您可以指定特定于该分支的第一个修订.默认情况下,hg strip将在.hg/strip-backup/目录中放置备份.如果条带被证明是个坏主意,你可以用hg unbundle恢复 .hg/strip-backup/filename.