如何从Mercurial中的工作目录中删除所有未跟踪的文件?

时间:2009-07-31 12:50:20

标签: mercurial

是否可以从我的工作目录中删除所有未跟踪的文件?假设我在工作目录中添加了一堆文件,没有通过'hg add'添加它们,现在想完全摆脱这些新文件?

我在Windows上,虽然我正在使用PowerShell,因此这里也可以使用组合解决方案。

11 个答案:

答案 0 :(得分:270)

添加名为清除的Mercurial扩展程序。它由Mercurial发布。

此扩展程序向“hg”添加“清除”命令,删除Mercurial不知道的文件。即未跟踪的文件。所以你的命令就是,

hg purge

默认情况下不启用,可能是为了避免意外删除您忘记添加的文件。

要安装此扩展程序,请将其添加到您的mercurial设置文件(Unix上的.hgrc,Windows上的Mercurial.ini)

[extensions]
purge = 

要暂时启用此扩展程序,您可以使用

hg purge --config extensions.purge= 

答案 1 :(得分:114)

没有清除的正确方法是:

hg st -un0 | xargs -0 rm

答案 2 :(得分:14)

谢谢!这也适用于Powershell:

hg st -un | rm

答案 3 :(得分:3)

请尝试以下操作:

hg st -un | xargs rm

答案 4 :(得分:3)

rm $(hg st -u)

...其中-u代表“未跟踪”,你也可以选择其他州。

答案 5 :(得分:2)

这应该可以解决问题:

hg status | grep '^\?' | sed 's/^\? //' | xargs rm -rf

答案 6 :(得分:2)

如果您不想使用清除:

rm $(hg st | grep ^? | awk '{print $2}')

答案 7 :(得分:1)

您可以使用

hg purge --all

删除所有被忽略和未跟踪的文件

(首先你需要按照一些答案的说明安装清除扩展名)

答案 8 :(得分:0)

假设您使用的是* nix系统,您可以运行以下内容:

rm `hg st | awk '/\?/ {print $2}'`

来自mercurial存储库的根目录。

我不知道实现相同的标准mercurial命令,但我相信有更多的命令行选项可以做到这一点。我确信有“更好”的解决方案,并有兴趣听取任何其他建议。

请谨慎使用此命令,因为它未经过彻底测试。

答案 9 :(得分:0)

这可以在Windows 10命令行中使用(当然要谨慎使用):

for /f %g in ('hg status -un') do @echo %g & @del %g

答案 10 :(得分:0)

一种快速/hacky 的方法,如果您没有本地更改,是从文件管理器(例如 Windows 资源管理器)中删除您想要的文件夹,然后使用“hg revert”恢复仅跟踪文件。