Git警告:LF将被替换为CRLF。

32
我正在使用Git GUI。我在一个文件夹中看到了几个文件出现了这个错误。我有两个选择按钮——解锁索引继续。我不明白这两个按钮的作用。我看到其他SO文章告诉我忽略警告,但他们没有提到如何在GUI中操作。请告诉我应该按哪个按钮以及为什么。 谢谢。
以下是错误信息示例 - 更新Git索引失败。将自动启动重新扫描以重新同步git-gui。 警告:LF将被替换为CRLF,在gen/com/click4tab/pustakalpha/BuildConfig.java文件中。文件在您的工作目录中将保留其原始行结束符。(对其他文件重复上述消息)

2
样例帖子 - https://dev59.com/_GjWa4cB1Zd3GeqPsqjT - james
我按下了继续按钮。我迫不及待地等待回复。希望这没有搞砸事情。 - james
阅读我的答案,运行CLI命令,你的错误应该会消失 :-) - CodeWizard
这个回答解决了你的问题吗?git将LF替换为CRLF - kenorb
7个回答

32

5
我之前看过这个链接,但它没有告诉我有关GUI选项的任何信息。 - james
6
问题的表述可能不是最理想的,但很清楚:“请告诉我应该按哪个按钮以及为什么”,这是在git gui级别上。感谢您的回答,但它主要请求用户在git级别(而非git gui)进行某些全局更改,对所有现有和未来的代码库都具有永久影响,却没有解释实际发生了什么或最初的问题意味着什么。您确定该命令确实是用户(或日后读者)需要的吗? - Stéphane Gourichon
7
我认为将autocrlf设置为false不是一个好主意。Mac和Windows会以不同的方式处理行尾。只有当完全确定只在PC上工作时,才应将其设置为false。 - adelriosantiago
这不是关于autocrlf的问题,而是关于safecrlf的问题。 - lzhh

13
这并不涉及到 "autocrlf",而是关于 "safecrlf"。使用以下命令来抑制警告:

问题不在于 "autocrlf",而在于 "safecrlf"。使用以下命令来消除警告:

git config --global core.safecrlf false

autocrlf 用于控制add/checkout时是否转换行尾,而 safecrlf 用于控制在进行此类转换时是否警告用户。


5

在@Code Wizard的解决方案上添加以下内容:https://dev59.com/eWAf5IYBdhLWcg3wVxcp#24770798

您还可以运行以下命令在本地设置CRLF,仅适用于您正在工作的特定项目:

git config --local core.autocrlf false

4
Soo,我也遇到了这个问题。我通过使用IDE进行简单修复。 有问题 使用IDE(Intellij Idea)。 使用IDE 然后,在使用IDE之后... 没有问题 没有问题)

1

我遇到了同样的问题 然后我使用以下命令解决了问题 git config --global core.safecrlf false


2
谢谢您告诉我们!不过,在这种情况下,您应该为已经存在一年的相同解决方案的答案投票:https://dev59.com/eWAf5IYBdhLWcg3wVxcp#68688405。 - Oliver
该用户的声望值不足以进行点赞。 - Ooker

0

要解决这个行尾问题,您需要按照以下步骤配置 Windows 中的 git:

git config --global core.autocrlf true

对于MacOS/Linux用户,您可以将其配置为:

git config --global core input

0

我进行了一些测试,发现这两个按钮的行为是相同的。 文件内容没有任何改变。 我原本期望进行 LF -> CRLF 替换。 但实际上(在两种情况下)我都收到了错误消息:

wrong # args: should be "ui_status msg"
    while executing
"ui_status [mc "Ready to commit."] ui_ready"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 $after"
    (procedure "select_first_diff" line 8)
    invoked from within
"select_first_diff $after "
    (procedure "rescan_done" line 15)
    invoked from within
"rescan_done $fd buf_rlo $after"
    (procedure "read_ls_others" line 14)
    invoked from within
"read_ls_others file2a1c920 {ui_status [mc "Ready to commit."] ui_ready}"

解决 Windows 下的这个问题:

在我的情况下,我发现了 Notepad++ 设置中的错误设置。 新创建的文档中使用了 Unix 的 LF, 因此在我的文档中,旧的文件使用 CRLF,而新的文件仅使用 LF。我将新创建的文档转换为使用 CRLF。 因为我认为将所有文件都放在同一格式下更好... 您可以使用第一个注释选项。 在这种情况下,该工具将省略此(换行符)检查!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接