我建议您执行 CRLF 转换即使您正在 Windows 机器上构建 Windows 软件并运行 Windows 服务器。
Git 本身的一些假设假设存储库中文件的行尾是 Unix 风格的。如果你违反了这个假设,并且做了一个非常合理的事情,比如签入带有 CRLF 行结尾的文件,就会发生奇怪的事情。
例如:git diff 如果您不进行行尾转换,则会创建行尾不匹配的补丁。这里我有一个在存储库中创建的文件没有行结束转换(core.autocrlf = false,我没有.gitattributes)。我对一行进行了更改,然后运行git diff:
git bash> git diff
diff --git a/file.txt b/file.txt
index f4606e9..45ec98f 100644
--- a/file.txt
+++ b/file.txt
@@ -3,7 +3,7 @@ with \r\n line endings.
My git repository is configured
with `core.autocrlf=false`, and
I do not have a .gitattributes.
-I'm going to change this line
+I'm going to change THIS line^M
in this file and see what the
resultant patch file looks like.
It's going to be ugly!
确实,它很丑 - 您可以在添加的新行上看到尾随的 ^M (\r)。
与过去几个版本的 Git 相比,处理本机 Windows CRLF 行结尾已有所改进,但我仍然建议您遵循line ending best practices,即使您不与 Unix 机器进行互操作。 p>
您的服务器是否为 Windows 并不重要。我什至不确定您指的是哪个服务器:托管您的 Git 存储库的服务器(它不检出文件,因此它根本不关心 )或您的服务器'重新发布到(通过使用正确的设置签出将获得 CRLF)。
但是,即使您认为其中一些带有行尾的怪事是可以接受的(而且它们可能是),也不要依赖core.autocrlf。
最佳做法不使用core.autocrlf,而是签入.gitattributes 文件。 core.autocrlf 影响你的机器,它不影响存储库。您需要所有存储库用户都具有一致的行尾设置,无论您决定进行翻译(我认为您应该再次翻译)与否。否则,其他用户在安装 Windows 版 Git 时选择的 core.autocrlf 设置将导致每个人签入具有不同行尾的内容,并且您将在每个人编辑时不断来回翻转它们他们,这真的很糟糕。