繁体   English   中英

如何在所有克隆/机器上禁用Git end-of-line(CRLF to LF)?

[英]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 )。

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

  1. gitattributes文档( git help attributes在线副本 ),详细描述了行结束规范化的工作原理以及不同属性的特定效果。 (可能最相关的是textcrlfdiffmergebinary 。)
  2. Git邮件列表线程“text”属性用于指定行尾规范化行为,还是具有更广泛的含义? (2012年3月30日),它扩展了不同属性的含义,并阐明了-text并不仅仅意味着“这是一个二进制文件”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM