gpt4 book ai didi

git - .gitattributes 中的 "* text=auto eol=lf"和 "* text eol=lf"有什么区别?

转载 作者:行者123 更新时间:2023-12-04 16:28:44 28 4
gpt4 key购买 nike

这与这个问题非常相似: What is the differrence between `* text=auto` and `* text eol=lf` in .gitattributes?

但我特别问为什么我应该使用 * text=auto eol=lf 而不是 * text eol=lf 或反之亦然?

据我了解 eol 会覆盖 text 设置,那么使用前者有什么意义呢?有区别吗?如果是这样 - 如何?

我现在正在阅读很多网站和 Stack Overflow 问题/答案 - 但我仍然完全糊涂。尤其是当我看到这种变化时:https://github.com/git/git/blob/master/Documentation/RelNotes/2.10.0.txt#L248

我发现更改的措辞很难读懂,以至于我现在一点也不聪明。有人可以解释一下吗?

最佳答案

Git 中有代码可以检测文件是文本文件还是二进制文件。

如果一个文件的前面有很多零(ASCII NUL)字节,则该文件被视为二进制文件。其他一些二进制模式也是如此。

Git 默认使用此代码来决定是否显示差异,当 git diff 时检测到某些文件中的某些更改。如果文件看起来是二进制文件,Git 会说“二进制文件不同”(默认情况下,你可以让它打印一个可用的差异,例如 git format-patch 会强制执行该行为)。否则,该文件似乎是文本,所以你得到一个常规的差异。

Git 将此代码用于text=auto.gitattributes ,但对于 text不是 -没有- =auto .所以:

* text=auto eol=<whatever>

告诉 Git:每次从索引中提取文件到工作树时,将检测代码应用于文件。如果检测代码声称该文件是文本文件,则应用行尾转换,同时将文件的冻干副本从索引重新水化为工作树中的可用形式。如果检测代码声称该文件是二进制文件,请不要理会它。1

相比之下,* text eol=<whatever>告诉 Git:每次将文件重新水化到工作树中时,应用行尾转换。 Git 2.10 版本之前的错误是 * text=auto意外的意思* text而不是 * text=auto .


1由于文本检测有时——尽管不是那么频繁——在(例如).jpg 上失败。图像文件,依赖 text=auto 是不明智的.但它大部分时间都有效。

关于git - .gitattributes 中的 "* text=auto eol=lf"和 "* text eol=lf"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56857990/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com