丢弃所有并获得最新版本的干净副本?

时间:2011-02-10 13:35:24

标签: mercurial pull

我正在移动构建过程以使用mercurial并希望将工作目录恢复到最新修订的状态。早期的构建过程运行将修改一些文件并添加一些我不想提交的文件,因此我有本地更改和未添加到存储库的文件。

丢弃所有这些并获得具有最新版本的干净工作目录的最简单方法是什么?

目前我正在这样做:

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

但似乎应该有一种更简单的方法。

我想做的相当于删除repo,进行新的克隆和更新。但是回购太大了,不够快。

5 个答案:

答案 0 :(得分:202)

这些步骤应该缩短为:

hg pull
hg update -r MY_BRANCH -C

-C标志告诉update命令在更新之前丢弃所有本地更改。

但是,这可能仍会在您的存储库中留下未跟踪的文件。听起来你想要摆脱那些,所以我会使用purge扩展名:

hg pull
hg update -r MY_BRANCH -C
hg purge

在任何情况下,没有一个命令可以让Mercurial执行,它会执行您想要的所有操作,除非您将进程更改为您说不能执行的“完全克隆”方法。 / p>

答案 1 :(得分:105)

hg up -C

这将删除所有更改并更新到当前分支中的最新头。

您可以启用purge extension以便能够删除所有未版本控制的文件。

答案 2 :(得分:10)

要在没有清除扩展名的情况下删除未跟踪的* nix,您可以使用

hg pull
hg update -r MY_BRANCH -C
hg status -un|xargs rm

正在使用

  

update -r --rev REV revision

     

更新-C - 清除未提交的更改(无备份)

     

status -u --unknown仅显示未知(未跟踪)的文件

     

status -n --no-status hide status prefix

答案 3 :(得分:3)

如果您正在寻找一种简单的方法,那么您可能想尝试一下。

我自己几乎不记得所有工具的命令行,所以我倾向于使用UI来做:

<强> 1。首先,选择“提交”

Commit

<强> 2。然后,显示被忽略的文件。如果您有未提交的更改,请将其隐藏。

Show ignored files

第3。现在,选择所有这些,然后点击“删除无版本”。

Delete them

完成。这是一个比命令行更容易记住的过程。

答案 4 :(得分:3)

hg状态会显示所有新文件,然后您可以 rm

通常我想摆脱被忽略和无版本的文件,所以:

hg status -iu                          # to show 
hg status -iun0 | xargs -r0 rm         # to destroy

然后跟着:

hg update -C -r xxxxx

将所有版本化文件置于修订版xxxx

的正确状态

为了遵循Stack Overflow传统告诉你你不想这样做,我经常发现这个&#34;核选项&#34;摧毁了我关心的东西。

正确的方法是做一个“干净”的工作。你的构建过程中的选项,也许是一个真正清洁的选项。和&#39; make distclean&#39;太