在 .gitattributes 中排除文件被视为文本

Excluding files from being considered text in .gitattributes

我看到很多带有 .gitattributes 文件的存储库将行结尾规范化为如下内容:

*.js text eol=lf

应该只规范化 .js 文本文件,但它们也明确排除一些二进制文件,例如 .png 文件:

*.png -text

这似乎没有必要,因为第一条规则仅适用于基于文本的 .js 文件。这个对吗?或者这只是被认为是最佳实践?

我不太清楚你的问题是什么。我要回答的问题是:是否有必要或建议在 .gitattributes 中将特定文件标记为文本或二进制,当指示 Git 执行 CRLF 行结束转换时?

答案是:这不是必需的,但建议在如果没有明确的建议,Git 将根据文件内容(不是文件名或扩展名,而是对逐字节内容的简单统计分析)猜测。会 Git 猜测您的 jpg 图像是文本,从而破坏它吗? Git 会猜测您的程序源是二进制的,因此懒得做 CRLF 行结束调整吗?我不知道,你也不知道。

Git的猜测非常好。但是为什么要冒这个风险,明确列出您的文件很容易,并且完全消除了这种风险?