我有带有 VS 项目的 Windows 机器,我使用 Visual Studio 和 Cygwin 环境中的工具,包括 Git。有时我在编辑后会在文件中得到不同的行尾。我想要一个简单的解决方案来检查文件的行尾一致性,然后再去回购。core.safecrlf我认为Git是正确的。现在我有一个奇怪的行为:
文件A并B带有以下参数:
$file A
A: HTML document, UTF-8 Unicode text, with CRLF line terminators
$file B
B: HTML document, UTF-8 Unicode (with BOM) text, with CRLF line terminators
文件 A 已经在仓库中,文件 B 是新的。请注意,两者都有 CRLF 行尾。现在尝试将它们上演,core.safecrlf是true。
$git add A # ok
$git add B # fails
fatal: CRLF would be replaced by LF in B.
使用core.safecrlf正确吗?或者也许我需要写钩子来检查文件?
笔记:
- 尝试使用不同的文件编码(有和没有 BOM),没有区别。
- Git中有相关
core.autocrlf功能,将其添加到标签中(Stackoverflow没有标签core.safecrlf) - git 版本 1.8.5.rc1.17.g0ecd94d(从 Cygwin 下的源代码编译)
编辑#1:签出core.autocrlf- 它是input。更改为false,现在我可以添加两个文件。为什么?