git试图在将core.autocrlf设置为true的情况下在ubuntu上将LF转换为CRLF



我在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暂存区中的快照已转换?

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

  • 您使用的窗口core.eol设置为native(git 1.7.2及以上版本中的默认值(,或者已明确将core.eol设置为crlf
  • 您的core.autocrlf设置为input

这些git attributescore.autocrlfcore.eol允许您配置行尾所需的内容及其可能的值,以及它们的含义,这些内容将在git手册页和这个stackoverflow答案中捕获

对于(1(和(2(,你的问题是,"因为你配置了它">

你应该做什么取决于你在哪个平台上,以及你将从哪个其他平台访问git。建议让git只存储LF作为行尾,因为否则生成的blob哈希会发生更改,即使更改可能只是行尾字符,git也会抱怨"更改了行"。

由于您在Ubuntu上,您希望将core.eol设置为lf,将core.autocrlf设置为input,这样git就不会在工作树中将LF转换为CRLF。

如果您没有进行跨平台开发(尤其是使用Windows(,请将autocrlf设置为false,并让与您一起工作的人员也这样做。在git中将文件制成对象之前,无需更改文件。这是一个巨大的麻烦。在使用git的4年里,我从未处理过这个问题。除非您正在使用Windows执行x平台,否则请设置为false。简单修复。

相关内容

  • 没有找到相关文章

最新更新