通常情况下,当你使用Windows系统,并且core.autocrlf被设置为true,或者.gitattributes包含指令来执行行尾标准化时,就会发生这种情况。在Windows机器上,行尾标准化的工作方式是:当你提交一个文件时,git会用LF替换每个CRLF,当你检出一个文件时,git会用CRLF替换每个LF。通常情况下,这对你来说都是透明的,在你的工作目录中你只看到CRLFs。然而,如果你以某种方式在工作目录中创建了一个只有LFs的文件,以下是会发生的事情: 当提交时,git将“转换”LFs为LFs,即不做任何处理 当检出时,git将LFs转换为CRLFs 结果是,你最终创建了一个只有LFs的文件,但从那时起,你总是看到其中的CRLFs。这就是git警告你的原因。 假设我们讨论的是文本文件,你可以忽略这个警告。但是,如果它是一个二进制文件,这意味着git将尝试对其进行行规范化,这将破坏该文件。在这种情况下,你需要检查你的.gitattributes文件,看看为什么会发生这种情况。
在Unix系统中,行尾使用换行符(LF)表示。在Windows中,一行由回车符(CR)和换行符(LF)组成,即(CRLF)。当你从Git获取来自Unix系统上传的代码时,它们只会有一个LF。 为了避免这种情况,只需在项目根目录中编写以下内容。git config core.autocrlf false