在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