git 自动将文件从 CRLF 转换为 LF 不起作用

git auto convert file from CRLF to LF not working

在我们的系统上,我们曾经能够在将文件提交到 git 时将所有 CRLF 转换为 LF。现在这个功能没有了。

这是我所做的:

git config --global core.autocrlf false

完成上述操作后,我使用以下命令进行检查:

git config --list

结果是:

... 
core.autocrlf=input
...
core.autocrlf=false
...

很费解。虽然 core.autocrlf 有两个条目,但第一个是 core.autocrlf=input?如果我取消设置 core.autocrlf 使用:

git config --global --unset core.autocrlf

当我列出 git config:

时,我仍然得到一个条目
core.autocrlf=input

第 2 步: 在我完成 git config --global core.autocrlf false 之后,我将 * text=auto 添加到 .gitattributes 文件中。

但是git还是没有为我自动转换换行符

从 git1.8.1rc1 开始:

"git config --get" used to diagnose presence of multiple definitions of the same variable in the same configuration file as an error, but it now applies the "last one wins" rule used by the internal configuration logic

因此您的第二个设置适用。

有关 core.autoctrlf 选项的更多解释:

If you’re on a Windows machine, set it to true – this converts LF endings into CRLF when you check out code:

$ git config --global core.autocrlf true

You can tell Git to convert CRLF to LF on commit but not the other way around by setting core.autocrlf to input:

$ git config --global core.autocrlf input

If you’re a Windows programmer doing a Windows-only project, then you can turn off this functionality, recording the carriage returns in the repository by setting the config value to false:

$ git config --global core.autocrlf false

更多解释: http://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration#Formatting-and-Whitespace