git尝试在ubuntu上将LF转换为CRLF,并将core.autocrlf设置为true

时间:2011-12-01 05:21:31

标签: git configuration core.autocrlf

我在ubuntu上使用git,autocrlf设置为true。我的编辑器配置为使用LF作为行尾字符。我编辑了一个文件后做了

git add .

我得到了:

warning: LF will be replaced by CRLF in file1.txt. (1)
The file will have its original line endings in your working directory. (2)

至于(1),为什么git想要将我文件中的LF转换成CRLF?只有当你的文件包含CRLF并且git才会尝试将CRLF转换为LF时,它是否应该完全正常工作?

对于(2),这是否意味着我正在查看的文件仍将仅使用LF,但git的暂存区域中的快照是否已转换?

2 个答案:

答案 0 :(得分:1)

通过查看警告消息,我猜您的配置如下:

  • 您正在使用core.eol设置为native的窗口(默认情况下为git 1.7.2及更高版本)或已明确将core.eol设置为crlf
  • 您的core.autocrlf设置为input

这些git attributescore.autocrlfcore.eol可让您配置所需的行结尾及其可能的值以及它们在git手册页和{{3}中捕获的含义}

对于(1)和(2)的答案,你的问题是,“因为你这样配置了”

你应该做什么取决于你所处的平台,以及你将从哪个平台访问git。建议让git只存储LF作为行尾,因为生成的blob哈希会改变,否则git会抱怨“更改的行”,即使你的更改可能只是行结束字符。 / p>

由于您使用的是Ubuntu,因此您希望将core.eol设置为lf并将core.autocrlf设置为input,以便git不会将LF转换为工作树中的CRLF。

答案 1 :(得分:0)

如果您没有进行跨平台开发(特别是使用Windows),请将autocrlf设置为false并让与您合作的人员也这样做。在将文件制作成git中的对象之前,无需更改文件。这是一个巨大的麻烦。我在使用git 4年后再也没有处理过这个问题。除非您使用Windows 进行x-platform ,否则设置为false。轻松修复。