如何在所有克隆/机器上禁用Git线端(CRLF到LF)?

如何在所有克隆/机器上禁用Git线端(CRLF到LF)?,git,newline,gitattributes,core.autocrlf,Git,Newline,Gitattributes,Core.autocrlf,可以看出,Git的线端规范化有其优点和缺点。我有一个特定的Windows only项目,我认为最好的办法是完全禁用线端规范化。也就是说,我希望保留所有换行符(大多数是CRLF),而不是让git将它们规范化为LF——只在幕后,我希望这种更改影响所有机器上存储库的所有克隆。这个问题是最有效的方法 大多数关于Git行尾规范化的讨论都是从core.autocrlf的角度进行的,我可以通过设置core.autocrlf=false来实现我的目标。然而,这是一个git配置设置,我相信必须在每台机器上逐个设置

可以看出,Git的线端规范化有其优点和缺点。我有一个特定的Windows only项目,我认为最好的办法是完全禁用线端规范化。也就是说,我希望保留所有换行符(大多数是
CRLF
),而不是让git将它们规范化为
LF
——只在幕后,我希望这种更改影响所有机器上存储库的所有克隆。这个问题是最有效的方法


大多数关于Git行尾规范化的讨论都是从
core.autocrlf
的角度进行的,我可以通过设置
core.autocrlf=false
来实现我的目标。然而,这是一个git配置设置,我相信必须在每台机器上逐个设置。如果为true,则似乎容易出错,特别是因为安装程序引导用户设置
core.autocrlf=true
避免在每台机器上分别设置
core.autocrlf
的最佳方法似乎是将
.gittattributes
文件检查到包含单行的存储库中

* -text
或者,如果您有较旧版本的Git

* -crlf
这告诉Git,对于所有路径(因此是
*
),不应该尝试行结束标准化。据我所知,这不应该有任何其他副作用。特别是,它不应改变差异的生成方式(它具有单独的属性
diff
/
-diff
)或合并的处理方式(它具有单独的属性
merge
/
-merge

有关更多详细信息,我建议使用以下资源:

  • gitattributes文档(
    git help attributes
    or),详细描述了行尾规范化的工作方式以及不同属性的特定效果。(最相关的可能是
    文本
    crlf
    diff
    合并
    ,以及
    二进制
  • Git邮件列表线程(2012年3月30日),它扩展了不同属性的含义,并澄清了
    -text
    不仅仅意味着“这是一个二进制文件”

  • 你帖子中的链接已失效。也许你可以用这个来代替?使用
    core.autocrlf=true
    (默认值),Git在签出时不修改行尾吗?它甚至还没来得及读取
    .gittributes
    ?(
    .gittributes
    本身将具有CRLF)。然后,在提交时,Git被告知不要转换CRLF(
    -text
    ),这样您就可以在repo中使用CRLF了?@MichelJung Git可以在从远程存储库提取后,但在签出文件之前,从本地存储库读取
    .gittributes
    。本地存储库的行尾应与远程存储库匹配。只有在签出文件并将其重新提交时,才会执行行尾转换。