【问题标题】:With Git, how do I turn off the "LF will be replaced by CRLF" warning使用 Git,如何关闭“LF 将被 CRLF 替换”警告
【发布时间】:2011-09-23 23:01:36
【问题描述】:

在 Git 中,当使用 autocrlf = true 标志时,当行尾改变时仍然会给出警告。

我了解警告的用途,以及如何关闭行尾标志,但如何关闭警告本身?

【问题讨论】:

  • 这里的所有答案都是过时的——在 git 引入 gitattributes 之后。 safecrlf 是你的朋友 autocrlf 不是!请看my answer

标签: git line-endings git-config


【解决方案1】:

你可以关闭警告

git config --global core.safecrlf false

(这只会关闭警告,而不是函数本身。)

【讨论】:

  • 关闭警告会阻止git用crlf替换lf吗? @chronial
  • @aidonsnous 来自git docs:如果 core.safecrlf 设置为“true”或“warn”,git 将验证转换对于 core.autocrlf 的当前设置是否可逆。对于“真”,git 拒绝不可逆的转换;对于“警告”,git 只打印警告但接受不可逆的转换。如果您不需要拒绝不可逆的转换,将 core.safecrlf 设置为 false 会抑制警告,但仍会自动转换。
【解决方案2】:

您应该使用core.autocrlf inputcore.eol input。或者只是不要让 git 使用 autocrlf false 更改行尾,并使用 core.whitespace cr-at-eol 摆脱差异中 crlfs 的突出显示等。

希望对你有帮助

【讨论】:

  • 通常,您希望您的 BAT 脚本结束并使用 CRLF 提交,而您的 SH 脚本使用 LF。
【解决方案3】:

我是这样用的:

将您当前的文件保存在 Git 中,这样您的工作就不会丢失。

git add . -u
git commit -m "Saving files before refreshing line endings"

从 Git 的索引中删除所有文件。

git rm --cached -r .

重写 Git 索引以获取所有新的行尾。

git reset --hard

重新添加所有更改的文件,并为提交做好准备。这 是您检查哪些文件(如果有)未更改的机会。

git add .
# It is perfectly safe to see a lot of messages here that read
# "warning: CRLF will be replaced by LF in file."

将更改提交到您的存储库。

git commit -m "Normalize all the line endings"

https://help.github.com/articles/dealing-with-line-endings/

【讨论】:

  • 我相信 OP 正试图避免再看到这些警告。不规范化所有的行尾。
  • git rm --cached -r . && git reset --hard 似乎可以解决问题,谢谢
【解决方案4】:

您正在寻找core.whitespace 选项(有关详细信息,请参阅git config --help)。

你可以这样设置这个选项:

$ git config core.whitespace cr-at-eol

【讨论】:

    【解决方案5】:

    有趣的是,我已经应用了这里解释的两个配置,我的 .gitconfig 文件包含这两行:

    [core]
           autocrlf = false
           whitespace = cr-at-eol
    

    但我收到了警告。 现在只是尝试一下,我注释掉了这两行,警告实际上消失了。 不知道为什么我把它们放在首位......

    【讨论】:

    • 您的存储库是否有不同的设置?
    • 抱歉回复晚了...我没有我的配置文件了,但我现在使用一个类似的配置文件,除了这两行之外,没有什么相关的。
    • 因为如果你 .git/config 中有其他设置会覆盖你的全局设置
    【解决方案6】:

    设置“core.safecrlf false”有效。但是,在我将值更改为“true”后,输出从“警告”变为“致命”,如下所示。

    $ git add -A
    warning: LF will be replaced by CRLF in .gitignore.
    The file will have its original line endings in your working directory
    
    $ git config --global core.safecrlf false
    
    $ git reset
    
    $ git config --global core.safecrlf true
    
    $ git add -A
    fatal: LF would be replaced by CRLF in .gitignore
    
    $
    

    【讨论】:

    • 在最近的 git 中,使用 gitattributes 比使用 autocrlf 更好。见my answer。所有答案(在这个 q 上)都是旧的和过时的
    猜你喜欢
    • 2010-12-08
    • 2011-12-15
    • 2022-11-10
    • 2014-09-05
    • 2021-08-07
    • 1970-01-01
    • 2019-04-16
    • 2016-10-01
    • 1970-01-01
    相关资源
    最近更新 更多