带有autocrlf=false的Git仍然产生;警告:CRLF将替换为LF“;信息

带有autocrlf=false的Git仍然产生;警告:CRLF将替换为LF“;信息,git,core.autocrlf,Git,Core.autocrlf,我在Ubuntu 14.04上使用Git版本1.9.1 我已经测试了core.autocrlf在DOS格式和Unix格式文件的新回购中的行为,并确认git addwithautocrlf=true确实会像预期的那样产生警告:LF将在Unix格式文件的…消息中被CRLF替换,当autocrlf=false时,不会为这两个文件生成任何消息。(在这种情况下,我不清楚它为什么决定在repo中使用DOS行结尾而不是Unix行结尾,但我不确定这在这里是否重要。) 然而,在另一份回购协议中,尽管有autocr

我在Ubuntu 14.04上使用Git版本1.9.1

我已经测试了
core.autocrlf
在DOS格式和Unix格式文件的新回购中的行为,并确认
git add
with
autocrlf=true
确实会像预期的那样产生警告:
LF将在Unix格式文件的…
消息中被CRLF替换,当
autocrlf=false
时,不会为这两个文件生成任何消息。(在这种情况下,我不清楚它为什么决定在repo中使用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.
$
我不明白它为什么这样做。我正在寻找问题的解释或如何调试它的线索

补充说明:


  • 不,repo中没有
    .gittributes
    文件。但它提出了一个有趣的问题,如果
    autocrlf
    设置为false,是否会产生影响
  • 没有,我只是仔细检查了一下,文件在每个0x0d之后都有一个0x0a,在每个0x0a之前都有一个0x0d

首先,将
core.autocrlf
设置为
false
通常是个好主意:请参见“”

其次,在要添加的文件的父文件夹中查询时,确保
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)由引入

对于意外分类为文本的二进制文件,转换可能会损坏数据

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

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

git ls-files --eol

请参阅“

是否有
.gittributes
文件?是否有
.gittributes
文件?如果是,他们指定了什么设置?文件是否混合了
CRLF
LF
?更新问题以回答您的好问题。谢谢。“但它提出了一个有趣的观点,如果autocrlf设置为false,是否会产生影响?”显然,它确实如此。我收到了同样的消息,并且core.autocrlf
false
。但是,在我的例子中,确实有一个“.gittributes”文件包含行
*text=auto
。一旦我删除它,转换警告(希望是转换本身)就消失了。