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

Val*_*yev 199 mercurial

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

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

sim*_*rsh 272

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

此扩展为"hg"添加了一个"清除"命令,用于删除Mercurial不知道的文件.即未跟踪的文件.所以你的命令是,

hg purge
Run Code Online (Sandbox Code Playgroud)

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

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

[extensions]
purge = 
Run Code Online (Sandbox Code Playgroud)

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

hg purge --config extensions.purge= 
Run Code Online (Sandbox Code Playgroud)

  • `hg purge --all`将删除所有未跟踪和忽略的文件.这对于清理源内构建很有用 (26认同)
  • 暂时启用ext你可以使用```hg purge --config extensions.purge =``` (22认同)

ton*_*nfa 118

没有清除的正确方法是:

hg st -un0 | xargs -0 rm
Run Code Online (Sandbox Code Playgroud)

  • @YaakovKuperman我想添加扩展名是比这个命令更少的工作(一次启用).我没有启用清除扩展,因为我需要在两周内不到一次.也叫我傻了,但是输入这个命令给了我足够的时间再做一次思考,然后做一些像'清除'一样具有破坏性的东西. (3认同)
  • @simplyharsh,这是有道理的,但我有两个理由去清除所有相同的东西.首先,您可以执行hg purge --print并查看清除之前要清除的内容列表.其次,如果你这样做,你需要在repo的根目录才能工作. (2认同)
  • 请注意,'hg st -u'和'hg purge'之间的行为存在差异.'hg st -u'将找不到未跟踪的空目录,而'hg purge'将找到(并删除)它们.这对你来说可能重要,也可能不重要. (2认同)

Nik*_*iou 17

谢谢!这也适用于Powershell:

hg st -un | rm
Run Code Online (Sandbox Code Playgroud)

  • xargs在powershell中不起作用 - 这是开箱即用的唯一答案"windows friendly" (2认同)