我看到很多带有.gitattributes
文件的存储库将行结尾规范化,内容如下:
*.js text eol=lf
这应该只规范化.js
文本文件,但他们也明确排除一些二进制文件,如.png
文件:
*.png -text
这似乎没有必要,因为第一条规则只适用于基于文本的.js
文件。这是正确的吗?或者这只是最佳实践?
我不太清楚你的问题是什么。我要回答的问题是:在.gitattributes
中,当指示Git执行CRLF行结束转换时,是否有必要或建议将特定文件标记为文本或二进制文件?
答案是:它不是必要的但是是明智的.在没有显式通知的情况下,Git将根据文件内容(不是文件名或扩展名,而是对字节内容的简单统计分析)猜测。Git会不会猜出你的jpg图像是文本,从而破坏它?Git会不会猜出你的程序源代码是二进制的,从而不去做CRLF行结束的调整?我不知道,你也不知道。
Git的猜测非常好。但是,当显式列出文件很容易并且完全消除这种风险时,为什么要冒这个风险呢?