【问题标题】:Discarding more than one commit in TortoiseHg在 TortoiseHg 中丢弃多个提交
【发布时间】:2015-03-05 23:37:42
【问题描述】:

我正在使用 TortoiseHg。
我做了一个错误的提交,然后又做了一个错误的提交。
两个提交都处于草稿状态(尚未推送)。
我想完全忽略这些提交并返回,就好像它们从未提交过一样。

执行回滚似乎只会删除最后一次提交。
我怎样才能完成这个简单的任务?

【问题讨论】:

    标签: mercurial tortoisehg


    【解决方案1】:

    在设置中启用mqstrip 扩展,然后在变更集上下文菜单中使用Modify History -> Strip

    【讨论】:

    • 现代 Mercurial 中的 Strip 不是 MQ 扩展的一部分
    • @LazyBadger 问题主要是关于 tortoisehg,这需要启用 mq
    • 错了!我在 THG hg strip 中没有启用 MQ
    • @Lazy Badger:你能以某种方式展示它吗?我禁用了它并在v3.2.3(最新的稳定版)中让它消失了。 dropbox.com/s/xpwgx0bhqo0qhb3/… --- 这是任意变更集的上下文菜单的屏幕截图(我想在那里看到菜单项)
    • @LazyBadger 这是我启用 mq 扩展程序后的屏幕截图:dropbox.com/s/3gh5be2v8crmhvj/… 所以,嗯,我不确定你如何让它工作没有它的 TortoiseHG
    【解决方案2】:

    在最近的一个 mercurial(我认为是 v2.8 之后)中,您可以使变更集过时,从而将它们从大多数视图中隐藏起来,但如果您发现需要它们,它们仍然存在。这是做你想做的事情的推荐方式。

    假设最近的变更集是 132,最新的好的变更是 130。只需像这样废弃变更集 131 和 132:

    hg prune -r 131::132
    

    再简单不过了(只要确保当前父级不是不需要的变更集之一)。

    如果您想查看过时变更集的内容,只需将 --hidden 添加到普通命令行,例如:

    hg log -r 120::132 --hidden
    

    注意。 Tortoise 具有查看过时变更集的功能,但我认为它还没有能力使它们过时。

    【讨论】:

      【解决方案3】:

      两次错误提交可以回滚两次

      跟进与@zerkms 的讨论

      MQ 在 2.8 之前包含到 Mercurial (TortoiseHG) 的条带。现在是independent extension,必须在没有 MQ 的扩展(参见 1)中启用(参见 2)

      之后,Strip 将出现在变更集的上下文菜单的“修改历史”菜单中

      【讨论】:

      • 您可以交换 1 和 2 并获得相同的结果。它要么提供相应的设施。如果您检查了它(而不是粗鲁),那么您不需要发布另一个答案。谢谢。
      猜你喜欢
      • 2011-07-03
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-22
      • 1970-01-01
      • 1970-01-01
      • 2013-12-12
      相关资源
      最近更新 更多