Mercurial:我如何恢复特定版本?

时间:2010-08-11 13:53:25

标签: mercurial

我正在使用实时服务器。我已经更新了提示并且它引起了问题:我需要恢复到特定的变更集(388),其中一切正常。

我没有更改服务器上的任何值,本地变更集根本没有关系。事实上,我实际上想要杀死任何本地意外更改或合并,以免混淆事情。

如何恢复特定变更集并终止任何本地更改?是否与之相关:

hg revert 

----更新---

为了澄清,我想要做的是首先将本地恢复到变更集388,然后确保我的本地仓库处于这样的状态,当我这样做时

hg status

我没有输出。否则我有一种讨厌的感觉,当我接下来提示时,会有冲突要处理 - 我想避免,因为当地的变化没有价值。

----更新---

对于这种情况下的其他任何人来说,最终为我解决的是:

rm -rf <repo_dir>
hg clone http://repository
hg update -r 388

这会杀死你所有的本地更改,所以请谨慎行事(但这就是我在这种情况下想要的)。

3 个答案:

答案 0 :(得分:20)

只需使用以下命令即可进行修订。

hg revert -r REV

它与--all。

相冲突

要杀死所有本地更改, - all应该可以正常工作。

hg revert --all

请勿使用rollback。这是一个不可逆转的程序,因此应谨慎使用。

修改

您可以使用--clean选项进行更新。这将丢弃任何未提交的更改。 然后更新到一些变更集。

答案 1 :(得分:12)

server:
- ..
- rev 386
- rev 387
- rev 388
- rev 389

clone to production

-- testing stuff, it doesn't work!
-- panic!
-- rev 390 (in panic)
-- rev 391 (in panic)
-- cool down, thinking, need to go back to 388
-- one way: hg update -C -rev 388 (to keep 390, 391)
-- other way: rm -rf dir (to discard 390, 391)
-- hg clone http://server/hg
-- cd dir
-- hg update 388 
-- testing, now works

还有一个很棒的Purge extension。非常可靠,它会从工作目录中删除所有未跟踪的文件。

答案 2 :(得分:5)

我不认为你想要的是什么,但我的解释是hg update -C -rev 388但你可以在恢复之后,或者甚至可能(不太可能)回滚。我对this question gives a good difference between update and revert

的回答

你真的需要弄清楚你想在工作副本中看到的内容以及你希望历史状态在他们之间做出选择