【发布时间】:2012-09-03 09:14:24
【问题描述】:
我经常担心我的 hgignore 文件可能会排除重要文件。例如,我刚刚注意到我排除了所有 .exe 文件,这些文件排除了一些应该与源代码一起保存的小型可执行工具。包含它们是一个简单的更改,但让我担心这些规则可能会产生意想不到的后果。
有没有办法查看由于.hgignore 文件而没有被跟踪的所有文件的列表?这样我就可以定期查看列表以检查我是否满意。
【问题讨论】:
我经常担心我的 hgignore 文件可能会排除重要文件。例如,我刚刚注意到我排除了所有 .exe 文件,这些文件排除了一些应该与源代码一起保存的小型可执行工具。包含它们是一个简单的更改,但让我担心这些规则可能会产生意想不到的后果。
有没有办法查看由于.hgignore 文件而没有被跟踪的所有文件的列表?这样我就可以定期查看列表以检查我是否满意。
【问题讨论】:
hg status -i 命令正是这样做的。
【讨论】:
@Jon 以正确的答案击败了我,但与status -i 一起,它一文不值:
hg status -m(仅修改过的文件)hg status -a(仅添加的文件)hg status -r(仅限已删除的文件)hg status -d(仅限已删除的文件)hg status -u(所有未跟踪的文件)hg status -c(文件没有变化,即“干净”)hg status -A(所有文件,即一切)【讨论】:
如果您想对文件名进行手动检查,则使用-i/--ignored 标志来状态:
$ hg status -i
I ignored file.exe
如果您只想要文件名,则使用-n/--no-status 来禁止打印在每个文件名前面的I 状态代码:
$ hg status -n -i
ignored file.exe
如果您需要使用xargs 处理文件,则另外使用-0/--print0 标志:
$ hg status -n -0 | xargs -0 touch
这将负责正确处理空格 - 使用 -0 时,您最终可能会将 ignored file.exe 视为两个文件:ignored 和 file.exe,因为 shell 通常会在空格上拆分。
以上命令显示匹配.hgignore的未跟踪文件。如果要解决查找与.hgignore匹配的跟踪文件的相关问题,则需要使用fileset query。看起来像这样:
$ hg locate "set:hgignore()"
您可以将文件集与对文件进行操作的所有命令一起使用,例如,您可以这样做:
$ hg forget "set:hgignore()"
安排删除找到的文件(在您的工作副本中留下一个副本)。
【讨论】:
是的,这是可能的。 如果你正在使用 TortoiseHg 之类的东西,你可以选择你想看的文件。
这是一个示例
【讨论】: