我们在.gitattributes文件中有这个:
* text=auto eol=lf
我想准确理解这是做什么的。
第一部分是text=auto
。来自documentation:
这可以确保Git认为是文本的所有文件将在存储库中具有规范化(LF)行结尾。
重要的是,Git仅针对它检测为文本文件的文件进行规范化。
但是,我不确定eol=lf
部分。我认为它也会仅对文本文件进行规范化,但我在文档中找不到对它的支持,并且当我们的PNG文件也被标准化时我们有一个实例,使它们无效。
是否存在类似上述的设置,基本上会说"在文本文件的两个方向中进行规范化,并保留二进制文件" ?
答案 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
文件 出现在项目中。他们不会。