在Mercurial中回滚多次提交(在推送到公共之前)

时间:2011-02-07 18:40:52

标签: mercurial repository commit rollback

我知道回滚可以从本地存储库中的最新变更集中删除提交。但是,是否可以删除自上次推送以来的所有最新提交,而无需重新克隆共享存储库?

3 个答案:

答案 0 :(得分:22)

您可以使用hg strip命令,mq扩展程序的一部分:

hg strip REV

这将删除该修订+及其所有后代。

在您尝试此操作之前,请复制/克隆存储库以进行试验。

答案 1 :(得分:13)

您可以使用hg clone创建一个新的回购:

hg clone -r last_good_changeset localrepo newlocalrepo

答案 2 :(得分:1)

如果您正在使用mercurial eclipse,您可以回滚一次,然后搁置这些更改,然后将多个顺序提交导出为修补程序,剥离这些提交,然后以相同的顺序导入这些修补程序,以防万一你有相互冲突的补丁,他们以理想的方式互相覆盖。

最后,你可以取消第一次回滚。这样做的效果就像你不止一次回滚一样。