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

AP2*_*257 21 mercurial

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

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

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

hg revert 
Run Code Online (Sandbox Code Playgroud)

----更新---

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

hg status
Run Code Online (Sandbox Code Playgroud)

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

----更新---

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

rm -rf <repo_dir>
hg clone http://repository
hg update -r 388
Run Code Online (Sandbox Code Playgroud)

这会杀死你所有的局部变化,所以谨慎行事(但这就是我在这种情况下想要的).

sim*_*rsh 20

只需使用下面的命令,即可进行修订.

hg revert -r REV
Run Code Online (Sandbox Code Playgroud)

它与--all相冲突.

要杀死所有本地更改, - 所有应该工作.

hg revert --all
Run Code Online (Sandbox Code Playgroud)

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

编辑

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


Val*_*yev 13

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
Run Code Online (Sandbox Code Playgroud)

还有一个很棒的Purge扩展.非常可靠的东西,它删除工作目录中所有未跟踪的文件.


jk.*_*jk. 5

我不认为你想要的是什么,但我的解释是,hg update -C -rev 388但你可以在恢复之后,或者甚至可能(不太可能)回滚.我对这个问题的回答给出了更新和恢复之间的一个很好的区别

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

  • 历史和地位是两个不同的东西。您可以使用版本 388,历史记录中版本为 389 和 390,但没有本地更改,因此状态为空。 (2认同)