如何列出git存储库中的所有文本(非二进制)文件?

nne*_*neo 16 git text-files

我有一个存储库,其中包含许多自动生成的源文件,我已将其标记为"二进制" .gitattributes(它们已签入,因为并非每个人都可以访问生成器工具).另外,repo在被忽略的目录中有很多source-ish文件(再次,作为构建过程的一部分生成),以及许多实际的二进制文件(例如像图标这样的小资源文件).

我现在想在repo中找到所有非自动生成和非忽略的文件.我以为我只是做了这个find和一些排除,但现在我有一个可怕的find声明与十几个条款(它仍然不完美的工作).git ls-files有效,但显示所有二进制文件没有区别,我必须过滤掉.

所以,我想知道:是否有一个简单的命令我可以运行,它列出了检查到repo的每个文件,并git考虑了一个"文本"文件?

Cir*_*四事件 19

git grep --cached -Il ''
Run Code Online (Sandbox Code Playgroud)

列出所有非空常规(无符号链接)文本文件:

  • -I:与二进制文件中的模式不匹配
  • -l:仅显示匹配的文件名,而不是匹配的行
  • '':空字符串git grep匹配任何非空文件
  • --cached:还查找添加git add但尚未提交的文件(可选)

或者您可以使用如何确定Git是将文件处理为二进制还是文本?在for循环中git ls-files.

TODO空文件.

找到所有二进制文件:在git HEAD中查找所有二进制文件

使用此测试存储库在Git 2.16.1上进行了测试.

  • 对于管道输入“xargs -0”,有选项“-z”。 (3认同)