【问题标题】:Why does .gitattributes not override core.autocrlf configuration on Linux?为什么 .gitattributes 不会覆盖 Linux 上的 core.autocrlf 配置?
【发布时间】:2018-08-15 11:52:37
【问题描述】:
在为项目设置 Git 时,我注意到行尾规范化在 Linux 和 Windows 上的工作方式略有不同。
据我了解有关此主题的 Git 文档,Windows 上的行为是正确的。具体来说,当存在.gitattributes 文件时,它应该覆盖core.autocrlf 设置。
下表显示了我所做的一些实验的结果。最左边的两列显示.gitattributes 文件和core.autocrlf 设置。其他列显示以下git 命令的结果:
-
git rm --cached <file>(强制下一次结帐以执行线路规范化处理)。
-
git checkout HEAD -- <file>(签出文件,应用行尾规范化)
-
git ls-files --eol <file>(检查工作树中的行尾)
+----------------+----------------+-------------+-- ---------+-------------+---------- --+--------------+
| .git 属性 |核心.autocrlf | Linux 2.7.2 | Linux 2.11.0 | Linux 2.16.2 | Windows 2.12.2.windows.2 | Windows 2.16.1.windows.1 |
| | | | | | | |
+----------------+----------------+-------------+-- ---------+-------------+---------- --+--------------+
|无 |真实 | w/crlf | w/crlf | w/crlf | w/crlf | w/crlf |
| | | | | | | |
+----------------+----------------+-------------+-- ---------+-------------+---------- --+--------------+
|无 |假 | w/lf | w/lf | w/lf | w/lf | w/lf |
| | | | | | | |
+----------------+----------------+-------------+-- ---------+-------------+---------- --+--------------+
| *文本=自动|真实 | w/crlf | w/crlf | w/crlf | w/crlf | w/crlf |
| | | | | | | |
+----------------+----------------+-------------+-- ---------+-------------+---------- --+--------------+
| *文本=自动|假 | w/lf | w/lf | w/lf | w/crlf | w/crlf |
| | | | | | | |
+----------------+----------------+-------------+-- ---------+-------------+---------- --+--------------+
| *文本=自动|真实 | w/crlf | w/crlf | w/crlf | w/crlf | w/crlf |
|测试文本 | | | | | | |
| | | | | | | |
+----------------+----------------+-------------+-- ---------+-------------+---------- --+--------------+
| *文本=自动|假 | w/lf | w/lf | w/lf | w/crlf | w/crlf |
|测试文本 | | | | | | |
| | | | | | | |
+----------------+----------------+-------------+-- ---------+-------------+---------- --+--------------+
如您所见,在 Linux 上,core.autocrlfsettings 似乎有效,即使存在 .gitattributesfile。
我需要一些帮助来确定这是否真的是一个错误。
【问题讨论】:
标签:
git
carriage-return
line-endings
eol
linefeed