如何检查因.hgignore而被忽略的文件?

Max*_*Max 15 mercurial file hgignore

我经常担心我的hgignore文件可能会排除重要文件.例如,我刚刚注意到我排除了所有.exe文件,这些文件排除了一些应该与源保留的可执行工具.包含它们只是一个简单的改变,但让我担心这些规则会带来意想不到的后果.

有没有办法查看由于该.hgignore文件而未被跟踪的所有文件的列表?这样我就可以定期查看清单,看看我对它感到满意.

Jon*_*Jon 27

该命令hg status -i正是如此.


Bur*_*lid 13

@Jon用正确的答案打败了我,但它的价值一点也没有status -i,有:

  • hg status -m (仅修改过的文件)
  • hg status -a (仅添加的文件)
  • hg status -r (仅删除的文件)
  • hg status -d (仅删除的文件)
  • hg status -u (所有未跟踪的文件)
  • hg status -c (没有变化的文件,即"干净")
  • hg status -A (所有文件,即一切)


Mar*_*ler 9

如果要对文件名进行手动检查,请使用-i/--ignored标志状态:

$ hg status -i
I ignored file.exe
Run Code Online (Sandbox Code Playgroud)

如果您只想要文件名,那么使用它-n/--no-status来禁止在I每个文件名前面打印的状态代码:

$ hg status -n -i
ignored file.exe
Run Code Online (Sandbox Code Playgroud)

如果需要处理文件xargs,则-0/--print0另外使用该标志:

$ hg status -n -0 | xargs -0 touch
Run Code Online (Sandbox Code Playgroud)

这将正确处理空间 - 使用时-0,您可能会最终将处理ignored file.exe为两个文件:ignored并且file.exe因为shell通常在空格上分割.

以上命令显示未跟踪的文件匹配.hgignore.如果要解决查找跟踪文件匹配.hgignore的相关问题,则需要使用文件集查询.看起来像这样:

$ hg locate "set:hgignore()"
Run Code Online (Sandbox Code Playgroud)

您可以将文件集与所有对文件进行操作的命令一起使用,因此您可以执行以下操作:

$ hg forget "set:hgignore()"
Run Code Online (Sandbox Code Playgroud)

计划要删除的文件(在工作副本中留下副本).