git config core.autocrlf 是真的,但我仍然收到警告?

Posted

技术标签:

【中文标题】git config core.autocrlf 是真的,但我仍然收到警告?【英文标题】:git config core.autocrlf is true, but I'm still getting a warning? 【发布时间】:2017-10-28 15:55:35 【问题描述】:

我了解 Windows 使用 CRLF,并且在提交之前让 Git 将行尾更改为 LF 并在签出时返回为 CRLF 是一种很好的做法。出于这个原因,我将core.autocrlf 设置为true。但是,与其他线程所说的相反(例如,this),我仍然收到此警告:

警告:LF 将被 [FILE_NAME] 中的 CRLF 替换。 该文件将在您的工作目录中以原始行结尾。

首先,我认为将 core.autocrlf 设置为 true 应该可以阻止这些警告。其次,Git 不应该在提交时将 LF 转换为 CRLF,而不是相反?

有趣的是,我刚刚提交了许多文件,但只收到了其中两个(一个 .csproj 和一个 .cs)的警告。

附:我在 Windows 上使用 Git Bash。

【问题讨论】:

Customizing Git — Git Configuration 和紧跟在core.autocrlf 部分之后的core.whitespace 部分是否提供任何见解或帮助?您如何检查您的 core.autocrlf 设置是否正确? 我跑了git config core.autocrlf,它打印了true 【参考方案1】:

在提交之前让 Git 将行尾更改为 LF 并在签出时返回为 CRLF 是一种很好的做法。

是,但 不是 core.autocrlf。 您应该始终将 core.autocrlf 设置为 false,因为它会尝试为 所有 文件(包括非文本文件)转换 eol(行尾)

如果您有需要转换的文件,请使用eol directive in a .gitattributes file。 确保使用latest Git for Windows:有一个bug in Git 2.10。

话虽如此,如果您仍想使用core.autocrlf,请参阅“Make Git “LF will be replaced by CRLF” warnings go away”:您可以删除索引并再次结帐。

【讨论】:

仍然,为什么在添加索引时将 LF 替换为 CRLF?我认为它应该是相反的。 @Farshid 不确定:我知道***.com/a/14039909/6309。你使用的是什么 Git 版本?最后一个2.13? (github.com/git-for-windows/git/releases) 你正在执行什么命令来触发该警告消息? @Farshid 你的仓库中是否有任何 .gitattributes,如 github.com/git/git/commit/… 中所见?如果一个 eol 指令将强制 eol 为 LF,这将解释该消息。 我在 .gitattributes 中有 * text=auto 我使用的是 2.11.1。我需要更新它。命令是git add,或git commit -a,它本身运行add

以上是关于git config core.autocrlf 是真的,但我仍然收到警告?的主要内容,如果未能解决你的问题,请参考以下文章

git系列4/4如何设置core.autocrlf | core.safecrlf (配置值的含义及最佳实践)

Git中的core.autocrlf选项

git core.autocrlf配置 解决Windows和Linux(Mac)换行问题

git系列2/4关于安装 Git 的时候选择 core.autocrlf 的配置值

Git错误

git 的记住用户名和密码和一些常用