【问题标题】:Undoing a revert in mercurial (not a duplicate query)在 mercurial 中撤消还原(不是重复查询)
【发布时间】:2013-06-09 12:46:26
【问题描述】:

我有一个没有未提交更改的 mercurial repo。我在修订版 846 上,并认为我的最后 2 次提交是垃圾,并想像从修订版 844 一样继续。所以我要输入:

hg revert -r 844 --all

不幸的是,我打错了,并写道:

hg revert -r 44 --all

所以我的整个存储库发生了巨大变化,包括目录结构。我没有看到任何 .orig 文件,所以我不认为答案在:

How to undo a revert in mercurial

帮助我。

hg 日志中仍然有我的所有提交到修订版 846 - 你认为我可以恢复到修订版 846 吗?

欢迎咨询

【问题讨论】:

    标签: mercurial revert


    【解决方案1】:

    hg revert 只是将您的工作副本设置为您指定的修订版,因此如果您在还原后没有进行提交,那么您的存储库没有更改。要修复它,您只需执行hg update -C,然后删除所有.orig 文件。

    之后,您可以执行正确的还原语句以删除最后两个修订。

    如果您确实执行了提交,那么您想要执行的命令 (hg revert -r 844 --all) 仍然可以通过撤消还原提交以及您最初打算撤消的两个提交来达到您想要的位置。

    【讨论】:

    • 非常感谢!我没有提交,我一点击 就注意到了问题,谢天谢地。请问,为什么更新中的“-C”?我正在挖掘 mercurial 手册/书籍/网站,但找不到明确说明它的用途。如果我做了“hg update”,那将把我带到当前的头,即修订版 846,这就是我想要的。我可以找到对 -C 用于命名分支的引用,这似乎无关紧要?
    • hg update -C 丢弃未提交的更改,我不会想到没有它它会工作。它在我的测试中肯定不起作用。
    • 我没有任何未提交的更改 - 也许这就是原因?当我说它有效时 - 我最终得到了一个符合我期望的工作目录。我还有一堆 .orig 文件,而且(更令人困惑的是)我在没有 .orig 的旧位置有一大堆旧文件。所以我不得不做一些清理工作。这符合您的期望和测试吗?
    • 是的,它似乎并没有真正起作用,您手动清理了它。 :) 您应该有未提交的更改,因为您将工作副本更改为与修订版 44 相同,而这些更改未提交。
    猜你喜欢
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 2013-09-28
    • 2022-12-17
    相关资源
    最近更新 更多