【问题标题】:Rollback multiple commits (before Pushed to public) in Mercurial在 Mercurial 中回滚多个提交(在推送到公共之前)
【发布时间】:2011-06-22 22:39:47
【问题描述】:

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

【问题讨论】:

    标签: mercurial repository commit rollback


    【解决方案1】:

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

    hg strip REV
    

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

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

    【讨论】:

    • 我相信这应该是问题的真正答案。另一个是回购的克隆,特别要求不要成为原始问题中的选项(“无需重新克隆”)。当我在寻找与原始帖子相同的解决方案时,这确实回答了我的问题,而另一个不是由于克隆...如果另一个是原始发帖人想要的答案,则应该更新问题以反映这一点并提供帮助搜索时的人?
    • 我同意 GazB 的观点
    • Hg Wiki for Strip 上提供了有关如何启用 Strip 扩展的说明。
    【解决方案2】:

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

    hg clone -r last_good_changeset localrepo newlocalrepo
    

    【讨论】:

    • 这是我最喜欢的答案,因为它不需要任何扩展。人们可以轻松地克隆一个 repo 的一个子集,而且几乎是瞬间完成的。
    • @Ry4an... 刚刚意识到您实际上已经回答了这个问题:stackoverflow.com/questions/4172753/…!对您的原始答案 +1 ;)
    • 嘿,不用担心。我对这些事情做得更好,我会尝试将问题重复。
    • 我已经尝试过这个解决方案,但它失败并出现错误 conq: invalid repository syntax. strip 为我工作。
    • 这不属于“无需重新克隆”的原始问题要求没有吗? :|
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-04-30
      • 1970-01-01
      • 2011-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      • 1970-01-01
      • 2018-03-01
      相关资源
      最近更新 更多