【问题标题】:Configure git repository so that all files are stored with line-ending LF (not CRLF)?配置 git 存储库,以便所有文件都使用行尾 LF(不是 CRLF)存储?
【发布时间】:2023-03-25 16:10:01
【问题描述】:

对于特定的 github 存储库(仅限),我需要确保推送的所有文本文件都有 LF 行结尾(不是 CRLF)。

此外,下拉的 repo 文件应在 OSX 或 Windows 客户端上保留 LF 行结尾。

这可能吗?

【问题讨论】:

    标签: git newline line-endings core.autocrlf lf


    【解决方案1】:

    您无法真正控制客户的操作 - 如果他们将 core.autocrlf 设置为 true,那么 LF 将自动转换为 CRLF。

    如果每个人都使用core.autocrlf = input,那么它应该一切正常。

    【讨论】:

    • 如何使您的答案与 Wlodzimierz Gajda 的以下答案相一致?
    【解决方案2】:

    尝试添加一个名为.gitattributes的文件,内容如下:

    *  eol=lf
    

    到你的仓库。那么无论core.autocrlf开发人员使用什么设置,所有文件都将始终使用LF

    请记住,在二进制文件(如 zip、jar、png 等)中提交时,它也会将 CRLF 更改为 LF

    【讨论】:

    • 如何使您的答案与上述来自 nneonneo 的答案相一致?
    • 在我看来我给出的答案是正确的。使用 .gitattributes 文件,客户端的 core.autocrlf 设置没有影响。
    • 啊,它会将二进制文件中的CRLF 更改为LF 的事实意味着它会破坏它们,可能会默默地破坏它们。这根本不可取...
    • 您需要文件名掩码以避免转换二进制文件:*.txt eol=lf*.css eol=lf。默默?使用 git,您无法静默更改文件 - 所有内容都将通过 git status 看到。
    • 另一个避免无意转换的有用方法可能是some/dir/ binary 规则(要放在gitattributes 中)。它将目录的所有内容表示为二进制。 Git 不会对some/dir/ 下的文件应用任何新行转换。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 2012-01-28
    • 2021-09-06
    • 2021-03-05
    相关资源
    最近更新 更多