让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.autocrlf
configurationvariables(如果我正确理解您的问题),可能会发生这种情况。
如果你处于干净的状态,也就是在提交之后,并且你没有未修改的变化,那么强制重新签出和删除索引应该有效:
$ 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
我认为可能的价值观是true
, false
和warn
。 我相信设定为false
将会解决警告,尽pipe这可能不是一个好主意。
试试这个,它为我工作:
cd src/au/policy/dao dos2unix
如果该文件夹中有其他文件,则需要将其分解为以下内容(否则将尝试在任何子目录中的每个文件上执行此操作,这可能需要一段时间):
cd src/au/policy/dao dos2unix EmailQueue.java dos2unix EmailQueueFactory.java dos2unix PolicyPublisher.java
它在我的机器上运行得非常快,并且修复了所有的行结尾,比其他一些修复更简单一些。