更新Git索引失败,LF将被CRLF取代?

时间:2012-09-20 09:59:00

标签: git github git-gui

我正在使用git-gui进行版本控制并将它们推送到远程位置。当我尝试重新扫描文件以进行更改时,我收到了此消息,我不确定这意味着什么。请帮帮我。

enter image description here

Updating the Git index failed.  A rescan will be automatically started to resynchronize git-gui.

warning: LF will be replaced by CRLF in bin/jarlist.cache.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in gen/com/click4tab/pustakalpha/BuildConfig.java.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in proguard-project.txt.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in project.properties.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in res/layout/start_test.xml.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in res/menu/start_test.xml.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in src/com/click4tab/pustakalpha/StartTestActivity.java.
The file will have its original line endings in your working directory.

4 个答案:

答案 0 :(得分:4)

解决方案是接受这种行为。您在Windows上,因此 autocrlftrue。它就在那里Git的内部记录中的行结尾是一致的。警告就在那里,这样您就可以看到在提交过程中是否意外损坏了二进制文件。

点击继续。如果要再次阻止它们发生在这些文件上,则需要取消暂存这些文件,然后更正行结尾并再次进行分级。通过在编辑器中将文件的行尾更改为CRLF / Windows,或将these command line tools放到system32目录中,这样就可以在任何命令提示符下对这些文件执行unix2dos some_file.java

答案 1 :(得分:2)

我遇到了类似的问题,并决定仔细研究一下我的配置。

Windows / Linux / MAC上的新行字符:

  1. X之前的MAC OS: \ r = CR(回车)
  2. MAC OS X / UNIX: \ n = LF(换行)
  3. Windows: \ r \ n = CR + LF
  4. 不要惊慌。 Git可以为您处理平台之间的转换。

    Git应该在回购中存储以LF结尾的行。

    将其设为;

    TRUE - 如果您使用的是Windows

    git config --global core.autocrlf true
    

    当您签出代码时,这会将LF结尾转换为CRLF。

    INPUT - 如果您使用的是MAC / LINUX

    你不需要转换任何东西,Git使用LF而你的MAC使用LF。

    但是,如果一个CRLF通过:

    ,你可以告诉git转换任何CRLF
    git config --global core.autocrlf input
    

    错误 - 未推荐

    我不推荐这个,但仅仅是为了解释:

    如果你是一个只在Windows机器上工作的Windows开发人员,你百分百肯定你永远不会与MAC上的人一起工作:

    git config --global core.autocrlf false
    

    <强>更新

    如下所述,我没有提到.gitattributes,可以为项目默认这些设置。

    如果您有时间,请参阅文档:http://git-scm.com/docs/gitattributes

答案 2 :(得分:1)

在Unix系统中,行尾用换行(LF)表示。在窗口中,用回车(CR)和换行(LF)(CRLF)表示一行。当您从从unix系统上载的git中获取代码时,它们将只有LF。

如果要关闭此警告,请在git命令行中键入

git config core.autocrlf true

如果您要明智地决定git应该如何处理,请阅读文档

这是一个片段

格式和空格

格式和空格问题是许多开发人员在协作(尤其是跨平台)协作时遇到的一些更令人沮丧和微妙的问题。补丁程序或其他协作工作很容易引入细微的空格变化,因为编辑者会默默地引入它们,并且如果您的文件曾经接触过Windows系统,则它们的行尾可能会被替换。 Git有一些配置选项可以解决这些问题。

core.autocrlf

如果您是在Windows上进行编程,并且与不熟悉Windows的人一起工作(反之亦然),则有时可能会遇到行尾问题。这是因为Windows在其文件中的换行符中使用了回车符和换行符,而Mac和Linux系统仅使用了换行符。这是跨平台工作的一个微妙但令人讨厌的事实。 Windows上的许多编辑器都以CRLF静默替换现有的LF样式的行尾,或者在用户按下Enter键时插入两个行尾字符。

当您将文件添加到索引时,Git可以通过将CRLF行尾自动转换为LF来解决此问题,反之亦然,当它将代码签出到文件系统中时,反之亦然。您可以使用core.autocrlf设置启用此功能。如果您使用的是Windows计算机,请将其设置为true –在签出代码时,这会将LF结尾转换为CRLF:

$ git config --global core.autocrlf true

如果您使用的是使用LF行尾的Linux或Mac系统,那么您不希望Git在签出文件时自动将其转换;但是,如果意外引入了带有CRLF结尾的文件,则您可能需要Git对其进行修复。您可以通过将core.autocrlf设置为input来告诉Git在提交时将CRLF转换为LF,相反:

$ git config --global core.autocrlf input

此设置应在Windows检出中为CRLF结尾,但在Mac和Linux系统以及存储库中为LF结尾。

如果您是Windows程序员,则是在执行仅Windows的项目,则可以关闭此功能,通过将config值设置为false来在存储库中记录回车:

$ git config --global core.autocrlf false

答案 3 :(得分:-2)

这行代码应该阻止此警告:

git config core.autocrlf false

如果您需要更详细的答案,请参阅输入该行代码的方式和位置,请查看此处: https://stackoverflow.com/questions/3841140/git-how-to-get-rid-of-the-annoying-crlf-message-on-msysgit-windows