如何在所有克隆/机器上禁用Git线端(CRLF到LF)?
可以看出,Git的线端规范化有其优点和缺点。我有一个特定的Windows only项目,我认为最好的办法是完全禁用线端规范化。也就是说,我希望保留所有换行符(大多数是如何在所有克隆/机器上禁用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配置设置,我相信必须在每台机器上逐个设置
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
)
有关更多详细信息,我建议使用以下资源:
git help attributes
or),详细描述了行尾规范化的工作方式以及不同属性的特定效果。(最相关的可能是文本
,crlf
,diff
,合并
,以及二进制
)-text
不仅仅意味着“这是一个二进制文件”你帖子中的链接已失效。也许你可以用这个来代替?使用
core.autocrlf=true
(默认值),Git在签出时不修改行尾吗?它甚至还没来得及读取.gittributes
?(.gittributes
本身将具有CRLF)。然后,在提交时,Git被告知不要转换CRLF(-text
),这样您就可以在repo中使用CRLF了?@MichelJung Git可以在从远程存储库提取后,但在签出文件之前,从本地存储库读取.gittributes
。本地存储库的行尾应与远程存储库匹配。只有在签出文件并将其重新提交时,才会执行行尾转换。