我有一个包含许多自动生成的源文件的存储库,我在 .gitattributes
中标记为“二进制”(它们被 checkin ,因为不是每个人都可以访问生成器工具)。此外,repo 在被忽略的目录中有很多源代码文件(同样,作为构建过程的一部分生成),以及一些实际的二进制文件(例如图标等小资源文件)。
我现在想在存储库中找到所有非自动生成和非忽略的文件。我原以为我会用 find
和一堆排除项来做这件事,但现在我有一个可怕的 find
语句,里面有十几个子句(而且它仍然不完美做的工作)。 git ls-files
可以工作,但会向我显示所有没有区别的二进制文件,我必须过滤掉这些文件。
所以,我想知道:是否有一个我可以运行的简单命令,它列出了 checkin 存储库的每个文件,以及哪个 git
认为是“文本”文件?
最佳答案
git grep --cached -Il ''
列出所有非空的常规(无符号链接(symbolic link))文本文件:
-I
:不匹配二进制文件中的模式-l
:只显示匹配的文件名,不显示匹配的行''
:空字符串使git grep
匹配任何非空文件--cached
:也可以找到用git add
添加但还没有提交的文件(可选)
或者您可以使用 How to determine if Git handles a file as binary or as text?在一个带有 git ls-files
的 for 循环中。
TODO 空文件。
改为查找所有二进制文件:Find all binary files in git HEAD
在 Git 2.16.1 上测试 this test repo .
关于git - 如何列出 git 存储库中的所有文本(非二进制)文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18973057/