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

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

我在Windows上,虽然我使用PowerShell,所以在这里也可以使用组合的解决scheme。

添加名为purge的Mercurial Extension。 它由Mercurial分发。

这个扩展名为“hg”添加了一个“清除”命令,用于删除Mercurial未知的文件。 即未跟踪的文件。 所以你的命令是,

hg purge 

它没有默认启用,也许是为了避免意外删除您忘记添加的文件。

要安装这个扩展,把它添加到你的mercurial设置文件(Unix上的.hgrc,Windows上的Mercurial.ini)

 [extensions] purge = 

没有清除的正确方法是:

 hg st -un0 | xargs -0 rm 

谢谢! 这也适用于我在Powershell中:

 hg st -un | rm 

尝试以下方法

 hg st -un | xargs rm 

这应该做的伎俩:

 hg status | grep '^\?' | sed 's/^\? //' | xargs rm -rf 
 rm $(hg st -u) 

…其中-u代表“未跟踪”,您也可以select另一个状态。

如果你不想使用清除:

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

假设你正在使用一个* nix系统,你可以运行如下的东西:

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

从mercurial仓库的根源。

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

请谨慎使用这个命令,因为它没有经过彻底的testing。

您可以使用

 hg purge --all 

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

(首先你需要按照一些答案中的解释安装清除扩展)