[英]How to to disable Git end-of-line (CRLF to LF) across all clones/machines?
正如人们可以从 其他 帖子中收集的那样,Git的终端规范化有其优点和缺点。 我有一个特定的Windows项目,我认为最好的办法是完全禁用行尾规范化。 也就是说,我想保留所有新行(大部分是CRLF
)完整,而不是让git将它们规范化为LF
仅在幕后,我希望该更改能够影响所有计算机上存储库的所有克隆。 问题是最有效的方法。
关于Git行尾规范化的大多数讨论都是以core.autocrlf
,我可以通过设置core.autocrlf=false
来实现我的目标。 但是,这是一个git-config设置,我相信必须在每台机器上分别设置它。 如果为true,那似乎容易出错,特别是因为msysgit
安装程序引导设置core.autocrlf=true
。
避免必须在每台机器上单独设置core.autocrlf
的最佳方法似乎是将.gitattributes
文件检入包含单行的存储库
* -text
或者,如果你有一个旧版本的Git那么
* -crlf
这告诉Git,对于所有路径(因此是*
),不应尝试行尾规范化。 据我所知,这不应该有任何其他副作用。 特别是,它不应该改变如何生成差异(这具有单独的属性diff
/ -diff
)或如何处理合并(这具有单独的属性merge
/ -merge
)。
有关详细信息,我建议使用以下资源:
git help attributes
或在线副本 ),详细描述了行结束规范化的工作原理以及不同属性的特定效果。 (可能最相关的是text
, crlf
, diff
, merge
和binary
。) -text
并不仅仅意味着“这是一个二进制文件”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.