【问题标题】:Git: Default all text files to unix line breaksGit:默认所有文本文件为unix换行符
【发布时间】:2012-05-24 09:09:22
【问题描述】:

我知道 .gitattributes 中有设置

*.txt eol=lf

还有一个是让所有文本文件都默认转换:

* text=auto

但是,当我尝试将所有文​​本文件作为 unix 行结尾时,我注意到这没有任何作用:

* text=lf

这也会改变二进制文件:

* eol=lf

那么如何只有文本文件和所有以unix行结尾的文本文件?

编辑:这可以通过设置 core.eol 设置来完成。我希望只使用 .gitattributes 来实现,这可能吗?

【问题讨论】:

    标签: git


    【解决方案1】:

    试试这个

    * text=auto !eol
    

    并在 .git/config 中设置 core.eol=lf。

    (在我提出另一个选项“* text=auto eol=lf”之前,答案已编辑,但不适用于这种情况)

    【讨论】:

    • 试过了,但如果没有这条线,二进制文件似乎仍然会损坏。在 windows 环境下使用 .exe 文件进行测试。
    • 实际上,第二个似乎可以做到,但需要设置 core.eol。所以只有 .gitattributes 没有办法做到这一点?
    • Git 通过检查文件的前 8kb 是否包含零字节来区分二进制文件和文本文件。一些二进制文件(如一些 PDF 文件)不包含零字节。这不太可能,但您的文件可能也是如此?我很确定提出的第二个选项应该会有所帮助(我对第一个选项不太自信)。所以也许你的实验有误,输入错误或使用旧的 Git 版本......我没有其他想法。
    • 是的,一开始我错了——第二个有效,第一个似乎无效。
    • 好的,我会从答案中删除它。根据文档,如果您在 .gitattributes 中明确设置“eol”属性,这会使 Git 将指定模式的所有文件视为文本并忘记“text=auto”。所以也许这就是为什么第一个选项不起作用的原因。所以我认为没有单一的解决方案。您可以指定每个扩展的规则:“.exe -text”、“.html eol=lf”、“*.pdf -text”等等..
    猜你喜欢
    • 2022-01-12
    • 2013-02-20
    • 2019-04-21
    • 1970-01-01
    • 2021-08-10
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多