正如人们可以收集from other posts一样,Git的行尾标准化有其优点和缺点。我有一个特定的Windows项目,我认为最好的办法是完全禁用行尾规范化。也就是说,我想保留所有换行符(大部分都是CRLF
),而不是让git将它们规范化为LF
- 仅在幕后,我希望这些更改能够影响所有克隆所有机器上的存储库。问题是最有效的方法。
大多数关于Git行尾规范化的讨论都是core.autocrlf
,我可以通过设置core.autocrlf=false
来实现我的目标。但是,这是一个git-config设置,我相信必须在每台机器上分别设置它。如果为true,那么这似乎很容易出错,特别是因为msysgit
安装程序会将其引导到设置core.autocrlf=true
。
答案 0 :(得分:107)
避免必须在每台计算机上单独设置core.autocrlf
的最佳方法似乎是将.gitattributes
文件检入包含单行的存储库
* -text
或者,如果您有旧版本的Git,那么
* -crlf
这告诉Git,对于所有路径(因此*
),不应尝试行尾规范化。据我所知,这不应该有任何其他副作用。特别是,它不应该改变差异的生成方式(这有单独的属性diff
/ -diff
)或如何处理合并(这有一个单独的属性merge
/ -merge
)。
有关详细信息,我建议使用以下资源:
git help attributes
或an online copy),详细描述了行尾标准化的工作原理以及不同属性的特定效果。 (可能最相关的是text
,crlf
,diff
,merge
和binary
。)-text
并不仅仅意味着“这是一个二进制文件”。