Git使用autocrlf=false仍会产生“警告:CRLF将被LF替换”的消息

5
我正在使用Ubuntu 14.04上的Git版本1.9.1。
我已经在一个新存储库中测试了core.autocrlf行为,并使用DOS格式和Unix格式文件进行了确认。当autocrlf=true时,对于Unix格式文件,git add会像预期的那样产生警告:LF will be replaced by CRLF in ...消息,并且在autocrlf=false时不会产生任何消息(在此情况下,我不清楚它为什么决定在存储库中使用DOS换行符而不是Unix换行符,但我不确定这在这里是否重要)。
然而,在另一个存储库中,尽管有autocrlf=true,它仍然告诉我它将转换一些文件:
$ git config core.autocrlf
false
$ git add lib/node_modules/pulp/node_modules/webpack/node_modules/webpack-core/node_modules/source-list-map/test/fixtures/from-to-tests/null-source.input.map
warning: CRLF will be replaced by LF in lib/node_modules/pulp/node_modules/webpack/node_modules/webpack-core/node_modules/source-list-map/test/fixtures/from-to-tests/null-source.input.map.
The file will have its original line endings in your working directory.
$

我弄不清楚为什么会这样。我在寻找问题的解释或调试的线索。

另外注意事项:

  • 不,存储库中没有.gitattributes文件。但这提出了一个有趣的问题,如果autocrlf设置为false,是否应该有所区别?
  • 而且,我刚刚仔细检查过,该文件在每个0x0d后面都有一个0x0a,并且在每个0x0a之前都有一个0x0d

2
是否存在 .gitattributes 文件? - poke
1
是否存在.gitattributes文件?如果有,它们指定了哪些设置? - torek
文件中是否混合了 CRLFLF - Chananel P
更新了问题以回答您的好问题。谢谢。 - cjs
2
但它提出了一个有趣的问题,如果将 autocrlf 设置为 false,是否会有所不同?显然是这样的。我收到了相同的消息,并且 core.autocrlf 为 false。但在我的情况下,确实存在一个包含行 * text=auto 的 ".gitattributes" 文件。一旦我将其删除,转换警告(以及希望的转换本身)就消失了。 - Jānis Elmeris
2个回答

3

首先,将 core.autocrlf 设置为 false 通常是个好主意:参见 "GIT中处理换行符".

其次,在要添加文件的父文件夹中查询时,请确保 core.autocrlf 实际上是 false:

git -C lib/node_modules/[...]/fixtures/from-to-tests/ config core.autocrlf

请检查问题是否仍然存在(截至2018年6月,Git 2.17.1)。

第三点,该警告是在2008年2月引入的(Git v1.5.5),由Steffen Prohaska (sprohaska) commit 21e5ad5

对于错误地分类为文本的二进制文件,转换可能会损坏数据。

您可能已经检查了文本文件,但忽略了二进制文件。

最后,自Git 2.8(2016年3月)以来,检测受eol设置影响的文件的一种好方法是使用:

git ls-files --eol

请查看 "git 显示有修改的文件,但我没有做任何更改,而且 git reset 也没有起作用"。

0

除了git config --local core.autocrlf false之外,还必须更新core.safecrlf。

git config --local core.safecrlf false

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