让Git“LF将被CRLF取代”警告消失

我已经设置Git,所以它不会提交不一致的行结尾。 这个问题是一堆文件出现修改,即使它们不是。 为了使这些文件的行结束在本地固定,我应该input什么内容?

# git checkout dev M src/au/policy/dao/EmailQueue.java M src/au/policy/dao/EmailQueueFactory.java M src/au/policy/dao/PolicyPublisher.java Already on 'dev' # git diff warning: LF will be replaced by CRLF in src/au/policy/dao/EmailQueue.java warning: LF will be replaced by CRLF in src/au/policy/dao/EmailQueueFactory.java warning: LF will be replaced by CRLF in src/au/policy/dao/PolicyPublisher.java 

这就是我添加到我的gitconfiguration文件,这似乎做我打算从这个问题:

 autocrlf = true 

你可以删除并重新签出这样的索引的有问题的文件:

 rm <files> git checkout -- <files> 

或者,如果它们是唯一被修改的文件(要小心这个命令),你可以像这样编写脚本:

 git diff --name-only --diff-filter=M | xargs rm -- git checkout -- . 

在GNU系统上,你可以使用一个稍微安全一点的pipe道,但是在任何情况下,你的文件名都没有空格或其他分隔符。

 git diff -z --name-only --diff-filter=M | xargs -0 rm -- 

如果更改core.autocrlfconfigurationvariables(如果我正确理解您的问题),可能会发生这种情况。

如果你处于干净的状态,也就是在提交之后,并且你没有未修改的变化,那么强制重新签出和删除索引应该有效:

 $ rm .git/index $ git reset --hard HEAD 

我认为,这将同步两个工作区文件和索引(临时区域)遵循crlf设置。

创build新的Xcode项目时,我遇到了这个问题。 我对这个问题的解决scheme:

在terminal写入

 $: git config --global --edit 

然后在gitconfiguration文件中将safecrlf更改为false 。 我的设置:

 [core] autocrlf = input safecrlf = false 

我知道git有这个cmd行工具,但他们不适合我。 然后Xcode创buildgit仓库没有任何问题。

唯一我能想到的是检查core.safecrlf是否设置为warn

git config --get core.safecrlf

认为可能的价值观是truefalsewarn 。 我相信设定为false将会解决警告,尽pipe这可能不是一个好主意。

试试这个,它为我工作:

 cd src/au/policy/dao dos2unix 

如果该文件夹中有其他文件,则需要将其分解为以下内容(否则将尝试在任何子目录中的每个文件上执行此操作,这可能需要一段时间):

 cd src/au/policy/dao dos2unix EmailQueue.java dos2unix EmailQueueFactory.java dos2unix PolicyPublisher.java 

它在我的机器上运行得非常快,并且修复了所有的行结尾,比其他一些修复更简单一些。