Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Mercurial中回滚多个提交(在推送到公共之前)_Mercurial_Repository_Commit_Rollback - Fatal编程技术网

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

在Mercurial中回滚多个提交(在推送到公共之前),mercurial,repository,commit,rollback,Mercurial,Repository,Commit,Rollback,我知道回滚可以从本地存储库中的最新变更集中删除提交。但是,是否可以删除自上次推送以来的所有最新提交,而不必重新克隆共享存储库?您可以使用hg strip命令,这是mq扩展的一部分: hg strip REV 这将删除该修订及其所有子版本 在尝试此操作之前,请复制/克隆要进行实验的存储库。您可以使用以下内容进行新的回购: 如果您使用的是mercurial eclipse,则可以回滚一次,然后搁置这些更改,然后将多个连续提交导出为修补程序,剥离这些提交,然后以相同的顺序导入这些修补程序,这样,如果

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

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

hg strip REV
这将删除该修订及其所有子版本


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

您可以使用以下内容进行新的回购:


如果您使用的是mercurial eclipse,则可以回滚一次,然后搁置这些更改,然后将多个连续提交导出为修补程序,剥离这些提交,然后以相同的顺序导入这些修补程序,这样,如果有冲突的修补程序,它们将以所需的方式相互覆盖


最后,您可以取消搁置第一次回滚。这与多次回滚的效果相同。

这是我最喜欢的答案,因为它不需要任何扩展。人们可以很容易地克隆回购协议的一个子集,而且几乎是瞬间的。@Ry4an。。。刚刚意识到你已经回答了那个问题:+1.你的原始答案;)嘿,不用担心。我在这些方面做得更好,我会尝试将问题复制。我尝试过此解决方案,但失败的原因是错误
conq:invalid repository syntax.
strip
对我有效。这不属于“无需重新克隆”原始问题吗|我相信这才是问题的真正答案。另一个是回购协议的克隆,在原始问题中明确要求不作为选项(“无需重新克隆”)。当我在寻找与原始帖子相同的解决方案时,这确实回答了我的问题,而另一个答案并不是因为克隆。。。如果另一个是原始海报想要的答案,那么问题是否应该更新以反映这一点并在搜索时帮助人们?我同意您的看法,关于如何启用
条带
扩展的说明可在上获得。
hg clone -r last_good_changeset localrepo newlocalrepo