如果您在 Windows 上工作,则需要确定您想要在沙箱中使用什么行尾,以及您想要在您的存储库中使用什么行尾。 autocrlf 设置的“正确”选择对每个人来说都不一样。
autocrlf=false:不要弄乱我的文件!
如果您只是不想让 Git 弄乱行尾,@VonC 的答案是正确的答案 - 将 autocrlf 设置为 false 意味着逐字输入和输出 Git。
这可以说是autocrlf 的唯一正确设置,因为正如@VonC 指出的那样,像 Windows .bat 文件这样的文件会被换行符转换破坏,而且你真的不希望在二进制文件中发生行尾转换(即一旦您不小心对其进行了 CRLF->LF 转换,.jpg 文件可能无法恢复...)
autocrlf=input: 修正我创建文件时的错误
然而,我在 Windows 上的通常答案是不同的:在我的存储库中,我总是想要 Unix 风格的换行符。但是在我的 Windows 机器上,许多讨厌的工具使用 Windows 样式的换行符创建文件。是的,您可以(并且应该)将编辑器设置为使用正确的行尾,但是将 autocrlf 设置为 input 会捕获我的“错误”,例如,当 Windows 机器上的 Python 脚本生成文件时,它通常以 CRLF 行结尾结束。在我的 Windows 配置中,我总是使用 git config --global core.autocrlf input,这意味着我的文件总是使用 Unix 样式的换行符提交,但它们会在存储库中存在时被签出。
.bat 和二进制文件呢?当此设置导致转换时,Git 会向我发出警告,因此如果它发生在不应发生的文件上,我会收到警告并可以修复该提交的情况。然而,我不记得曾经遇到过这个问题,但是我的 Git 存储库几乎完全是可移植的源代码和文本文件,我真的非常想要 LF 结尾。
如果您在 Windows PC 上处理面向 Linux 或 Mac 的项目,我认为这是一个不错的设置。
autocrlf=true:我真的总是希望在我签出的文件中使用 CRLF
我提到这个是为了完整性,但通常会建议不要这样做。如果您在处理文件时总是希望文件以 CRLF 行结尾,则将 autocrlf 设置为 true 即可,但以 Unix 样式的 LF 行结尾提交它们。这在某些情况下是有道理的,但在许多情况下会造成麻烦。
做出选择并在全球范围内保存
根据您收到的消息,我猜true 是您的设置,因此您可能想决定false 或input 中的哪一个最适合您,并通过在其中运行这两个命令之一来全局设置你的 Git Bash 提示符:
git config --global core.autocrlf false
或者
git config --global core.autocrlf input
Git 开发者的愿望清单:
我真正想要的是autocrlf=prompt 设置:在我尝试提交包含 CRLF 的文件时询问我该怎么做。我想我应该让自己成为一个预先提交的钩子......