.gitattributes 中的“* text=auto eol=lf”和“* text eol=lf”有什么区别?
What's the difference between "* text=auto eol=lf" and "* text eol=lf" in .gitattributes?
这与这个问题非常相似:
但我特别想问为什么我应该使用 * text=auto eol=lf
而不是 * text eol=lf
或者反之亦然?
根据我的理解,eol
会覆盖 text
设置,那么使用前者有什么意义呢?有区别吗?如果是 - 如何?
我现在正在阅读这么多网站和 Stack Overflow questions/answers - 但我仍然完全困惑。特别是当我看到这个变化时:https://github.com/git/git/blob/master/Documentation/RelNotes/2.10.0.txt#L248
我发现更改的措辞很难读懂,所以我现在 none 更聪明了。有人可以解释一下吗?
Git 中有代码可以 检测 文件是文本文件还是二进制文件。
如果一个文件的前面有很多零 (ASCII NUL) 字节,则该文件被视为二进制文件。其他一些二进制模式也是如此。
默认情况下,Git 使用此代码来决定是否在 git diff
检测到某些文件中的某些更改时向您显示差异。如果文件看起来是二进制文件,Git 表示 "binary files differ"(默认情况下,您可以让它打印可用的差异,例如,git format-patch
强制执行该行为)。否则,该文件似乎是文本,因此您会得到一个常规差异。
Git 也 将此代码用于 .gitattributes
中的 text=auto
,但 不是 text
-没有-=auto
。所以:
* text=auto eol=<whatever>
告诉 Git:每次从索引中提取文件到 work-tree 时,都会对文件应用检测代码。如果检测代码声称该文件是文本文件,则应用行尾转换,同时将文件的 freeze-dried 副本从索引重新组合为 work-tree 中的可用形式。如果检测代码声称该文件是二进制文件,请不要管它。1
相比之下,* text eol=<whatever>
告诉 Git:每次将文件重新水合到 work-tree 时,应用行尾转换。 在 2.10 版本之前 Git 中的错误是 * text=auto
意外意味着 * text
而不是 * text=auto
.
1由于 text-detection 有时(尽管不是那么频繁)在(例如).jpg
图像文件上失灵,因此 依赖 text=auto
。但它在 大多数 的时间有效。
这与这个问题非常相似:
但我特别想问为什么我应该使用 * text=auto eol=lf
而不是 * text eol=lf
或者反之亦然?
根据我的理解,eol
会覆盖 text
设置,那么使用前者有什么意义呢?有区别吗?如果是 - 如何?
我现在正在阅读这么多网站和 Stack Overflow questions/answers - 但我仍然完全困惑。特别是当我看到这个变化时:https://github.com/git/git/blob/master/Documentation/RelNotes/2.10.0.txt#L248
我发现更改的措辞很难读懂,所以我现在 none 更聪明了。有人可以解释一下吗?
Git 中有代码可以 检测 文件是文本文件还是二进制文件。
如果一个文件的前面有很多零 (ASCII NUL) 字节,则该文件被视为二进制文件。其他一些二进制模式也是如此。
默认情况下,Git 使用此代码来决定是否在 git diff
检测到某些文件中的某些更改时向您显示差异。如果文件看起来是二进制文件,Git 表示 "binary files differ"(默认情况下,您可以让它打印可用的差异,例如,git format-patch
强制执行该行为)。否则,该文件似乎是文本,因此您会得到一个常规差异。
Git 也 将此代码用于 .gitattributes
中的 text=auto
,但 不是 text
-没有-=auto
。所以:
* text=auto eol=<whatever>
告诉 Git:每次从索引中提取文件到 work-tree 时,都会对文件应用检测代码。如果检测代码声称该文件是文本文件,则应用行尾转换,同时将文件的 freeze-dried 副本从索引重新组合为 work-tree 中的可用形式。如果检测代码声称该文件是二进制文件,请不要管它。1
相比之下,* text eol=<whatever>
告诉 Git:每次将文件重新水合到 work-tree 时,应用行尾转换。 在 2.10 版本之前 Git 中的错误是 * text=auto
意外意味着 * text
而不是 * text=auto
.
1由于 text-detection 有时(尽管不是那么频繁)在(例如).jpg
图像文件上失灵,因此 依赖 text=auto
。但它在 大多数 的时间有效。