1个回答

113

避免在每台机器上单独设置core.autocrlf的最佳方法似乎是将一个包含单行的.gitattributes文件检入存储库。

* -text

或者,如果您使用的是旧版本的 Git,则

* -crlf

这段文字告诉Git,在所有路径中(因此使用了*通配符),不应尝试进行行末标准化。据我所知,这不应该产生其他任何副作用。特别是,它不应更改生成差异的方式(这有单独的属性diff/-diff)或处理合并的方式(这有单独的属性merge/-merge)。
如需更多详细信息,请参阅以下资源:
  1. gitattributes文档(git help attributes在线版本),详细描述了行尾规范化的工作原理以及不同属性的特定影响。(可能最相关的是textcrlfdiffmergebinary。)
  2. Git邮件列表线程“text”属性是否仅用于指定行尾规范化行为,还是具有更广泛的含义?(2012年3月30日),扩展了不同属性的含义,并澄清了-text并不意味着“这是一个二进制文件”。

你发的链接已经失效了,也许你可以用这个链接代替?http://git.661346.n2.nabble.com/Is-the-quot-text-quot-attribute-meant-only-to-specify-end-of-line-normalization-behavior-or-does-it--td7420001.html - Antimony
2
使用 core.autocrlf=true(默认值),Git 在检出时不会修改行尾吗?这是在它甚至读取 .gitattributes 之前发生的事情吗?(.gitattributes 本身将具有 CRLF)。然后,在提交时,Git 被告知不要转换 CRLF(-text),因此您最终在存储库中得到的是 CRLF。 - Michel Jung
2
@git可以在从远程仓库拉取代码之后,但在检出文件之前,从本地仓库读取.gitattributes。本地仓库应该与远程仓库的行尾相匹配。只有在检出并提交文件时才会执行行尾转换。 - Jason

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接