gitattributes中的“*text=auto-eol=lf”将做什么?

gitattributes中的“*text=auto-eol=lf”将做什么?,git,gitattributes,Git,Gitattributes,我们在.gittributes文件中有以下内容: * text=auto eol=lf 我想确切地了解它的作用 第一部分是text=auto。从: 这确保Git认为是文本的所有文件在存储库中都有标准化(LF)行结尾 重要的一点是Git只对其检测为文本文件的文件进行规范化 但是,我不确定eol=lf部分。我认为它也将只对文本文件进行规范化,但我在文档中找不到对它的支持,我们有一个实例,当我们的PNG文件也被规范化时,使它们无效 是否有类似上述的设置,基本上会说“对文本文件在两个方向上进行规范化,

我们在.gittributes文件中有以下内容:

* text=auto eol=lf
我想确切地了解它的作用

第一部分是
text=auto
。从:

这确保Git认为是文本的所有文件在存储库中都有标准化(LF)行结尾

重要的一点是Git只对其检测为文本文件的文件进行规范化

但是,我不确定
eol=lf
部分。我认为它也将只对文本文件进行规范化,但我在文档中找不到对它的支持,我们有一个实例,当我们的PNG文件也被规范化时,使它们无效


是否有类似上述的设置,基本上会说“对文本文件在两个方向上进行规范化,而不使用二进制文件”

答案是否定的,Git当前(从2.3开始)无法通过自动检测二进制和文本格式进行签出EOL转换,因此它只能处理文本。解决方法是仅为选定的文件类型(例如,
*.txt
)指定
eol=lf
,或者相反,使用
*.png binary
)将某些文件类型标记为二进制文件

相关的:


*text=auto

这将正确规范repo中的文本文件。但是, 第二部分(LF强制签出)今天不容易实现 因为添加
eol=lf
将不幸地处理二进制文件。 目前唯一的解决方案是标记某些类型以进行转换(例如。,
*.txt eol=lf
)或相反,将某些类型标记为二进制(例如。,
*.png二进制文件

这两者都有相同的问题:特定的文件类型必须 在
.gittributes
文件中明确列出,这意味着 要么类型必须提前知道,要么所有开发人员都必须知道 记得每次更新新文件类型时更新
.gittributes
文件 显示在项目中。但他们不会


Git,现在的行为与人们预期的一样。

我的Git客户端在2.9.15版本,更新为le last one 2.15解决了我的问题。非常感谢。