git add 报出警告 "CRLF will be replaced by LF in <file-name>"

10

最近我开始着手进行Xamarin跨平台开发。我的团队中有一些开发人员使用Mac进行开发(使用Visual Studio for Mac),另一些人则使用Windows(使用Visual Studio 2017)。我们使用git / github作为我们的代码存储库/版本控制系统。

在我进行了一些更改并添加了一些新文件后,我发出了git add .以暂存所有更改,但我收到了如下警告:

warning: CRLF will be replaced by LF in <file-name>.
The file will have its original line endings in your working directory

我检查了我的git配置并发现core.autocrlf=input,据我理解并根据这里的文档https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration,这是适用于Mac的正确设置。

然而,我对上面的警告不确定,因为我以前从未见过它。更让我困惑的是,并非我添加的所有文件都显示这个警告,只有一些文件。

我已经阅读了许多关于此问题的帖子,但没有一个清楚地解释这些警告是否可以忽略。或者是否需要修复它们,以及如何为像我们团队一样同时使用Windows和MacOS机器的团队修复它们。

我需要担心这个警告吗?对于像我们这样在Windows和MacOS机器上工作的团队来说,它具体意味着什么?

1个回答

10

我仍然会建议:

git config core.autocrlf false
git add --renormalize .
git commit -m "Do not touch eol"

如果可能的话,避免Git对你的换行符做出任何更改,并且使用尊重正在编辑文件的换行符的编辑器进行工作。


你能详细解释一下吗?如果你在Mac上工作,而其他人在Windows上工作,为什么不改变呢?谢谢。 - cd491415
1
@cd491415 因为Mac和Windows都可以使用相同的文件在\n eol(不需要\r\n),所以Git不需要做任何修改。 - VonC
根据 Git 官方文档 https://git-scm.com/book/zh/v2/Git-%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6-Git-%E9%85%8D%E7%BD%AE,尽管 false 在跨平台团队中可用,但不建议使用。 - cd491415
2
@cd491415 那个文档已经过时了,现在不准确,甚至已经过时。 它甚至没有提到core.safecrlf(https://git-scm.com/docs/git-config#git-config-coresafecrlf)。 正如我在过去8年中一直说的那样(https://dev59.com/Y3I-5IYBdhLWcg3wF0Uc#2016763,https://dev59.com/GnE85IYBdhLWcg3wViA4#2825829),应该通过.gitattributes core.eol指令来管理eol,而不是修改所有内容的全面性的core.autocrlf。 - VonC
@cd491415 我没有看到你在问题中的编辑,但是你引用了一个过时的文档。 - VonC

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