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配置 解决Windows和Linux(Mac)换行问题