如何在所有克隆/机器上禁用Git行尾(CRLF到LF)?
正如人们可以从 其他 职位上收集的一样,Git的行尾标准化有其优点和缺点。 我有一个特定于Windows的项目,我认为最好的做法是完全禁用行结束标准化。 也就是说,我想保留所有换行符(大多数是CRLF
),而不是让git将它们标准化为LF
,并且只在后台执行,我希望这种改变影响到所有机器上所有存储库的克隆。 问题是最有效的方法。
大多数关于Git行结束标准化的讨论都是以core.autocrlf
来说的,我可以通过设置core.autocrlf=false
来实现我的目标。 但是,这是一个git-config设置,我相信必须在每台机器上分别设置。 如果这是真的,那似乎很容易出错,特别是因为msysgit
安装程序引导一个进入设置core.autocrlf=true
。
避免在每台机器上分别设置core.autocrlf
的最好办法似乎是将一个.gitattributes
文件检查到包含单行
* -text
或者,如果你有一个老版本的Git的话
* -crlf
这告诉Git,对于所有的path(因此*
),不应该尝试结束行标准化。 据我所知,这不应该有任何其他的副作用。 特别是,它不应该改变如何生成差异(这有单独的属性diff
/ -diff
)或如何处理合并(这有一个单独的属性merge
/ -merge
)。
欲了解更多详情,我build议这些资源:
- gitattributes文档(
git help attributes
或在线副本 ),详细描述了行尾标准化的工作原理以及不同属性的特殊效果。 (可能最相关的是text
,crlf
,diff
,merge
和binary
。) - Git邮件列表线程是“文本”属性只是为了指定行结束标准化的行为,还是它有更广泛的影响? (2012年3月30日),其中扩展了不同属性的含义,并阐明了 –
-text
并不仅仅意味着“这是一个二进制文件”。