目录
问题描述
在开发过程中,git判断一些文件有修改,但点开该文件时,提示内容仅在行分隔符中有差异,这意味着两个文件的内容实际上是相同的,但它们的行分隔符不同。
可是git还是认为这个文件有修改,开发者依然可以进行提交
那这样就会产生误操作:既然文件本质上都没有修改,那你提交干什么?
解决方案
这个提示通常表示在不同的操作系统中,行尾符号(也叫行分隔符)存在差异。Windows 使用的是 CRLF(回车+换行),而 Unix/Linux 系统(包括 macOS)使用的是 LF(换行)。如果你在不同的操作系统之间切换,或者在不同的编辑器中打开文件,这种差异可能会发生。
在 IntelliJ IDEA 中,可能是因为 IDE 或者 Git 配置不一致导致的行尾符号差异。
可以通过设置 Git 来确保在提交时自动转换行尾符号(打开终端,输入下面的命令):
git config --global core.autocrlf true
这会在检出时转换 LF 为 CRLF,提交时保持 CRLF。
注意:在配置之前,已经被git检测到的有修改的文件不会因为配置了上面的内容后而立即生效,想要生效,需要对该文件进行回滚(如果该文件本来就没有差异,可以放心回滚,如果确实有差异,最好备份一下代码,再回滚),这样,git之后检测的文件差异都不会出现内容仅在行分隔符中有差异了。即:如果两个文件内容实际上相同时,即使它们的行分隔符不同,也不会判断该文件有修改,这样就不会再误导开发者去提交一个内容没变化的文件到git上了。