暂时将工作副本切换到 Mercurial 中的先前修订版?

Temporarily switch working copy to previous revision in Mercurial?

这基本上是与 Temporarily switch working copy to a specific Git commit 相同的问题, 但对于 Mercurial

假设修订版 500 是我在 Mercurial 中提交的最后一个修订版。我又做了一些工作,并意识到在早期的修订中出了点问题。所以,我有 "git stashed",也就是说,hg shelved 我当前的更改,所以我的修订版是 500。

现在我要做的是checkout revision 499,重新编译软件,看看是否还有错误;如果是,检查版本498,重建软件,看是否还有错误;如果是,修改497,重新编译软件,看是否还有错误;等等,直到我弄清楚哪个版本引入了错误。

完成后,我想回到修订版 500,unshelve 我以前的工作,添加一个修复,然后进行新的提交(这将是修订版 501) .这意味着当我回到历史时,我不想重置任何东西,也不想从那里开始任何东西。

在 git 我可以只做 git checkout HASH 回到历史,一旦完成,git checkout master 回到提示。 我应该在 Mercurial 中使用哪些命令?

您可以使用 hg update 转到旧版本:

hg update 499  # The short id number or the full hash

或者如果您想在不需要知道 id 的情况下进入父变更集,您可以使用 mercurial revset:

hg update .~1

确定问题后,您可以简单地:

hg update tip

并取消搁置您的更改,添加您的修复并提交。

我建议您阅读 Mercurial:权威指南。您的问题非常基本/入门级 mercurial 用法。

编辑:link Mercurial:权威指南是:

http://hgbook.red-bean.com/read/

或本书的1.9版本:

https://book.mercurial-scm.org/read/index.html