gitattributes中的`* text = auto eol = lf`会怎样?

时间:2015-04-03 15:32:18

标签: git gitattributes

我们在.gitattributes文件中有这个:

* text=auto eol=lf

我想准确理解这是做什么的。

第一部分是text=auto。来自documentation

  

这可以确保Git认为是文本的所有文件将在存储库中具有规范化(LF)行结尾。

重要的是,Git仅针对它检测为文本文件的文件进行规范化。

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

是否存在类似上述的设置,基本上会说"在文本文件两个方向中进行规范化,并保留二进制文件" ?

1 个答案:

答案 0 :(得分:12)

答案是否定的,Git目前(截至2.3)无法通过自动检测二进制和文本格式来执行结帐EOL转换,以便仅处理文本。解决方法是仅为选定的文件类型指定eol=lf(例如,*.txt),或者相反,使用例如二进制标记某些文件类型作为二进制文件。 *.png binary)。

相关:feature proposal on Git mailing list


  

* text=auto

     

这将正确规范回购中的文本文件。然而   今天不能轻易实现第二部分(结账时强迫LF)   因为添加eol=lf将不幸地处理二进制文件。   今天唯一的解决方案是标记某些转换类型(例如,   {(1}})或反过来将某些类型标记为二进制(例如,   *.txt eol=lf)。

     

这两个都存在同样的问题:特定的文件类型必须   在*.png binary文件中明确列出,这意味着   要么必须提前知道类型,要么所有开发人员必须知道   记得每次新文件类型时都更新.gitattributes文件   出现在项目中。他们不会。