Mercurial – 如何丢弃所有本地更改,包括未版本控制的文件?
我正在移动一个构build过程来使用mercurial,并希望将工作目录恢复到最新版本的状态。 构build过程的早期运行将会修改一些文件,并添加一些我不想提交的文件,所以我有本地更改和未添加到存储库的文件。
什么是最简单的方法来放弃所有这些,并得到一个干净的工作目录,有最新的修订?
目前我正在这样做:
hg revert --all <build command here to delete the contents of the working directory, except the .hg folder.> hg pull hg update -r MY_BRANCH
但似乎应该有一个更简单的方法。
我想做相当于删除回购,做一个新的克隆和更新。 但回购太大了,不够快。
这些步骤应该能够缩短到:
hg pull hg update -r MY_BRANCH -C
-C
标志告诉update命令在更新之前放弃所有的本地修改。
但是,这可能仍然会在您的存储库中留下未跟踪的文件。 这听起来像你想摆脱这些,所以我会使用purge
扩展:
hg pull hg update -r MY_BRANCH -C hg purge
无论如何,没有任何一个命令可以让Mercurial去执行,除非您将stream程更改为您所说的“完全克隆”方法,否则您将在此执行所有的操作。
hg up -C
这将删除所有的变化,并更新到当前分支的最新头。
你可以打开清除扩展 ,以便能够删除所有未版本控制的文件。
要删除没有清除扩展名的* nix未跟踪,您可以使用
hg pull hg update -r MY_BRANCH -C hg status -un|xargs rm
正在使用哪个
更新-r –rev修订版本
更新-C – 清除丢弃未提交的更改(无备份)
状态-u – 未知仅显示未知(未跟踪)的文件
状态-n – 无状态隐藏状态前缀
如果你正在寻找一个简单的方法,那么你可能想尝试一下。
我自己几乎不能记住所有工具的命令行,所以我倾向于使用UI:
1.首先select“提交”
2.然后,显示忽略的文件。 如果您有未提交的更改,请将其隐藏。
3.现在,select全部,然后点击“删除未版本”。
完成。 这是一个比命令行更容易记住的过程。
hg状态会显示你所有的新文件,然后你可以打他们。
通常我想摆脱忽略和未版本化的文件,所以:
hg status -iu # to show hg status -iun0 | xargs -r0 rm # to destroy
然后按照以下步骤进行:
hg update -C -r xxxxx
它将所有版本化的文件置于修订版xxxx的正确状态
要遵循堆栈溢出的传统,告诉你不想这样做,我经常发现这个“核选项”已经销毁了我所关心的东西。
要做到这一点的正确方法是在构build过程中有一个“干净”的选项,也许“做得很干净”,“做得干干净净”。