让Git"LF将被CRLF取代"的警告消失了

cor*_*ras 47 git

我已经设置了Git,因此它不会提交不一致的行结尾.问题是即使它们不是,一大堆文件也会被修改.我键入什么来使这些文件在本地端固定行结尾?

# 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
Run Code Online (Sandbox Code Playgroud)

这是我添加到我的git配置文件中的内容,它似乎做了我想要的除此问题:

autocrlf = true
Run Code Online (Sandbox Code Playgroud)

Jak*_*ski 61

如果您更改core.autocrlf配置变量(如果我正确理解您的问题),则可能会发生这种情况.

如果你处于干净状态,即刚刚提交,并且你没有未经修改的更改,强制重新签出和删除索引应该可以解决问题:

以下命令git reset --hard HEAD将使您当前的分支指向最新的提交,并且所有未提交的代码都将丢失.确保提交代码或进行备份

$ rm .git/index
$ git reset --hard HEAD
Run Code Online (Sandbox Code Playgroud)

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

  • 你显然知道你的git,对我很有用.谢谢!真!非常感谢你! (3认同)

Son*_*que 32

我在创建新的Xcode项目时遇到了这个问题.我解决这个问题的方法:

在终端写

$: git config --global --edit
Run Code Online (Sandbox Code Playgroud)

然后在git配置文件中将safecrlf更改为false.我的设置:

[core]
    autocrlf = input
    safecrlf = false
Run Code Online (Sandbox Code Playgroud)

我知道git有cmd线工具,但它们对我不起作用.然后Xcode创建git repos没有任何问题.

  • @Andrei它可能使用[vim](http://www.vim.org/)作为编辑器,按下escape退出输入模式并输入`:wq`来保存并退出. (2认同)

Bob*_*man 25

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

git config --get core.safecrlf

认为可能的值是true,falsewarn.我相信设置false将解决警告,虽然这可能不是一个好主意.

  • 将“safecrlf”设置为“false”可能会损坏二进制文件,这就是它默认为“warn”的原因。 (2认同)

CB *_*ley 17

您可以从索引中删除并重新检出有问题的文件,如下所示:

rm <files>
git checkout -- <files>
Run Code Online (Sandbox Code Playgroud)

或者,如果它们是唯一的修改过的文件(请小心使用此命令),您可以像这样编写脚本:

git diff --name-only --diff-filter=M | xargs rm --
git checkout -- .
Run Code Online (Sandbox Code Playgroud)

在GNU系统上,您可以使用更安全的管道,但在任何情况下,您的文件名中似乎都没有空格或其他分隔符.

git diff -z --name-only --diff-filter=M | xargs -0 rm --
Run Code Online (Sandbox Code Playgroud)