Mercurial Hg 回到上次修订

Mercurial Hg get back to last revision

我已经通过使用 drush 命令下载它添加了一个模块,然后我输入

hg addremove

然后

hg commit -m "Added Module"

然后 hg pull --update

然后hg push

代码已推送到存储库中,现在我的问题是如何返回到之前的更改。我已经推送了代码,所以有什么方法可以通过一些修改来检查。如果我们可以签出,那么它将从 reprository 中删除所有添加的文件。

你需要的是

hg update -r <changesetID>

这会将您的本地文件更改为指定的 changesetID。这些更改将从本地版本中删除,但不会从远程版本中删除。一旦更改为与头部不同的修订版,您推送的任何更改都会创建新的头部。

hg revert --all --rev "last revision number"

完成此操作后,它将删除所有添加的文件,然后推送回到上次修订。

这对我有用

最初提出的问题我有点不清楚,但是最后一句话,即

If we can checkout ,so will it delete all the added file from reprository.

表示担心更改丢失。

首先,让我指出 mercurial 竭尽全力避免丢失信息(除非特别授权进行不可恢复的更改),但是信息可能 似乎 丢失(例如,如果文件备份为 ORIGINALFILENAME.orig);此外,信息实际上可能会丢失,例如如果有人做了一些修改备份的事情。

其次,如果您担心 "update" 命令是否会导致不需要的更改,请务必使用 --check 选项,例如

hg --check update

--check 选项可以缩写为 -c 但要注意:-C 选项几乎具有相反的效果。

第三,可能值得指出的是,获得对自己理解的信心的一种方法是创建一个测试存储库,并对其进行试验,例如沿线:

mkdir test; cd test; hg init; ....; ...
cd ..; hg clone test cloned ; ....; ...

这样您就可以在 "cloned" 存储库中试验 "hg pull"。