我们的.gitattributes文件中包含以下内容:
* text=auto eol=lf
我想要准确地理解这是做什么的。
第一部分是text=auto
。从documentation
这可以确保所有Git认为是文本的文件在存储库中都会有规范化的(LF)行结尾。
重要的是,Git只对它检测为文本文件的文件进行标准化。
但是,我对eol=lf
部分不是很确定。我认为它也将只对文本文件进行规范化,但我在文档中找不到对它的支持,我们有一个实例,当我们的PNG文件也被规范化时,使它们无效。
有没有像上面这样的设置,基本上是说“对文本文件进行双向标准化,而不对二进制文件进行处理”?
发布于 2016-12-05 22:52:29
Git 2.10 fixed this,现在的行为与预期不谋而合。
发布于 2015-04-08 15:41:25
答案是否定的,Git目前(从2.3起)不能进行自动检测二进制和文本格式的结账EOL转换,因此它只处理文本。解决方法是仅为选定的文件类型指定eol=lf
(例如,*.txt
),或者相反,使用*.png binary
将某些文件类型标记为二进制)。
相关:feature proposal on Git mailing list
* text=auto
这将正确地规范化存储库中的文本文件。然而,第二部分(LF强制签出)目前并不容易实现,因为添加eol=lf
也会不幸地处理二进制文件。现在唯一的解决方案是标记某些类型进行转换(例如,*.txt eol=lf
),或者相反地,将某些类型标记为二进制(例如,*.png binary
)。
这两个文件都有相同的问题:特定的文件类型必须在.gitattributes
文件中显式列出,这意味着要么必须提前知道类型,要么所有开发人员必须记住每次项目中出现新的文件类型时都要更新.gitattributes
文件。他们不会这么做的。
https://stackoverflow.com/questions/29435156
复制相似问题