2017-05-28 164 views
1

我知道Windows使用CRLF,并且最好让Git在提交之前将行结束符更改为LF,并在签出时返回到CRLF。出于这个原因,我有core.autocrlf设置为true。然而,与其他线索相反(例如,this),我仍然收到此警告:git config core.autocrlf是真的,但我仍然收到警告?

警告:LF将由[FILE_NAME]中的CRLF取代。 该文件将在其工作目录中具有其原始行尾。

首先,我认为设置core.autocrlf为真应该停止这些警告。其次,Git应该在提交时将LF转换为CRLF,而不是相反?有趣的是,我只提交了很多文件,并且只有其中两个(.csproj和.cs)的警告。

P.S.我在Windows上使用Git Bash。

+0

[定制Git-Git配置](https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration)以及紧接在部分后面的'core.whitespace'部分'core.autocrlf'提供任何见解或帮助?你是如何检查你有'core.autocrlf'设置正确的? –

+0

我运行了'git config core.autocrlf'并打印出了'true'。 – lfk

回答

0

让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”:您可以删除您的索引并再次结帐。

+0

不过,为什么在添加索引时用CRLF代替LF?我认为它应该是相反的。 – lfk

+0

@Farshid不知道:我知道https://stackoverflow.com/a/14039909/6309。你使用的是什么Git版本?最后一个2.13? (https://github.com/git-for-windows/git/releases/)你正在做什么命令来触发该警告消息? – VonC

+0

@Farshid您的回购中是否有任何.gitattributes,如https://github.com/git/git/commit/15c96723457cfa1be6cdbd74e3131ecf13cd9790中所示?这将解释消息,如果一个eol directove强迫eol到LF。 – VonC

相关问题