【发布时间】:2011-12-21 23:43:11
【问题描述】:
我想恢复我用 mercurial 完成的合并,但我在 Google 中找到的网站上看不清楚。
我最新的 Mercurial 变更集是 0d9973c7ade3 - Merge 'feature/20' with 'default'.,我已推送,我想返回。
我要返回的变更集是 8dc9b342ea75,这是我想要恢复到的默认变更集。
我该怎么做?
【问题讨论】:
标签: mercurial
我想恢复我用 mercurial 完成的合并,但我在 Google 中找到的网站上看不清楚。
我最新的 Mercurial 变更集是 0d9973c7ade3 - Merge 'feature/20' with 'default'.,我已推送,我想返回。
我要返回的变更集是 8dc9b342ea75,这是我想要恢复到的默认变更集。
我该怎么做?
【问题讨论】:
标签: mercurial
既然您已经推送了合并,那么正确的解决方案很大程度上取决于有多少人使用您的“主”存储库以及您对他们的控制权。
如果您单独使用此存储库,则可以使用 MQ 扩展来剥离更改历史并完成它。为此,您需要完全访问存储库。
如果其他人正在使用存储库,它会更复杂。如果你想要一个“干净”的历史,你需要每个人的合作才能做到。如果无法做到这一点,您可以还原更改,但历史会留下痕迹。
您必须在“主”存储库上激活MQ extension。然后你可以使用strip 命令删除所有不需要的提交:
hg strip unwantedrevision
然后,您必须再次克隆存储库以删除所有已删除变更集。或者,您也可以剥离每个存储库上的变更集。
如果一个仓库在操作后仍然有历史变化,下次再推送。这就是为什么您需要每个拥有副本的人的合作。
如果无法控制所有克隆,可以使用backout 命令。我帮不了你太多,我从来不用它。但是,链接的文档对我来说似乎很清楚。
祝你的问题好运:)
【讨论】: