所以,我一直认为,当将文件检出到工作目录时, core.autocrlf=true
Git 会替换所有LF
结尾。CRLF
来自Git 书:
如果您使用的是 Windows 机器,请将其设置为 true——这会在您签出代码时将 LF 结尾转换为 CRLF
但是,当检出具有混合行结尾并core.autocrlf
设置为的文件时true
,我的 Git 版本会按原样检出文件。
我找到了一个非常方便的 GitHub 存储库来测试这种行为 - https://github.com/YueLinHo/TestAutoCrlf
测试结果:
- 只有结尾的文件
LF
(LF.txt)- With
autocrlf=false
: 按原样签出(所有行结尾都是LF
) - With :结帐时
autocrlf=true
所有行尾都更改为CRLF
- With
到目前为止一切顺利,一切都如我所料。现在对于具有混合行尾的文件:
- 具有混合行尾的文件(MIX-more_CRLF.txt、MIX-more_LF.txt)
- With
autocrlf=false
: 按原样签出(LF
和的混合CRLF
) - With
autocrlf=true
: 按原样签出(LF
和的混合CRLF
)
- With
为什么会这样?我还没有看到任何关于autocrlf=true
不接触具有混合行尾的文件的信息。
我的 Git 设置有问题吗?在全局 .gitconfig 中签出后,我检查了存储库文件夹core.autocrlf
中运行的设置,命令返回 true。没有 .gitattributes 文件可以覆盖设置。git config --get core.autocrlf
autocrlf=true
所有测试都是在 Git 版本上进行的1.9.5.msysgit.0
。
编辑:在最新的 msysgit 版本上的行为相同1.9.5.msysgit.1
。
我最初的问题是,我以某种方式设法在设置为 时提交了一个只有LF
结尾的混合行结尾文件,这意味着该文件按原样签出,但提交时更改为. 我目前正在另一台机器上工作,无法在我的 msysgit 版本上重现此行为。core.autocrlf
true
CRLF
LF