Mercurial - 如何丢弃所有本地更改,包括未版本控制的文件?

Ror*_*ory 156 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
Run Code Online (Sandbox Code Playgroud)

但似乎应该有一个更简单的方法.

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

ang*_*son 206

这些步骤应该可以缩短为:

hg pull
hg update -r MY_BRANCH -C
Run Code Online (Sandbox Code Playgroud)

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

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

hg pull
hg update -r MY_BRANCH -C
hg purge
Run Code Online (Sandbox Code Playgroud)

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

  • 如果未激活清除扩展,您还可以使用如下命令:`hg --config"extensions.purge ="purge --all` (18认同)
  • 谢谢,这是我需要的'清除'.更新-C没有摆脱未跟踪的文件,这是我正在努力的主要事情. (6认同)
  • @ csharptest.net`hg purge --all`刚刚让我头疼,因为它也删除了我的本地配置,即:数据库用户/密码等:) (5认同)
  • 您也可以使用TortoiseHg进行清除.您只需在工作台的设置中打开扩展(或编辑mercurial.ini). (4认同)

zer*_*kms 112

hg up -C
Run Code Online (Sandbox Code Playgroud)

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

您可以打开清除扩展程序,以便能够删除所有未版本控制的文件.

  • @Rory:nope,`hg purge`用于未版本控制的文件. (7认同)

KCD*_*KCD 10

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

hg pull
hg update -r MY_BRANCH -C
hg status -un|xargs rm
Run Code Online (Sandbox Code Playgroud)

哪个使用

更新-r --rev REV修订版

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

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

status -n --no-status隐藏状态前缀