最近工作中,使用git clone代码后,启动项目,却突然报错,根据提示内容,发现是换行的问题引起的。
报错如下图所示:
为什么呢?
为什么会出现这种原因呢?发现团队中,大家分别使用了windows系统,Linux系统,MAC OS系统;在不同的操作系统中,换行符并不统一,Linux系统中使用0x0D0A(CRLF),而MAC OS系统起初使用0x0D(CR) 后来和Linux系统保持一致。 而git默认采用Linux的换行符。
git 为了解决不同平台换行符不一致的问题,在 windows 操作系统中默认在检出代码时将 LF 转换为 CRLF,而在提交的时候再转换为 LF,但是看似完美的解决方案在中文环境中却失效了。
多操作系统平台协同开发时,遇到这种问题,应该怎么办呢?
解决方案
- 使用编译器配置
-
git设置
方法一:编译器设置
file — setting — code style — Line separator 选择Unix and macOS
方法二:
使用方法一的时候,突然发现失效了,这个时候,我们就需要去配置git,先了解下git的相关参数:eol autocrlf safecrlf
-
eol
: 设置工作目录中文件的换行符,有三个值 lf, crlf 和 native(默认,同操作系统) -
autocrlf
:-
true
表示检出是转换CRLF, 提交时转换为 LF -
input
表示检出是不转换,提交时转换为 LF -
false
表示不做转换
-
-
safecrlf
:-
true
表示不允许提交时包含不同换行符 -
warn
则只在有不同换行符时警告 -
false
则允许提价时有不同换行符存在
-
AutoCRLF #提交时转换为LF,检出时转换为CRLF git config --global core.autocrlf true #提交时转换为LF,检出时不转换 git config --global core.autocrlf input #提交检出均不转换 git config --global core.autocrlf false SafeCRLF #拒绝提交包含混合换行符的文件 git config --global core.safecrlf true #允许提交包含混合换行符的文件 git config --global core.safecrlf false #提交包含混合换行符的文件时给出警告 git config --global core.safecrlf warn
配置方法如下:
<!--统一换行符为 lf--> git config --global core.eol lf <!--将自动转换关闭,避免转换失败不能不同进行提交--> git config --global core.autocrlf false <!--禁止混用 lf 和 crlf 两种换行符--> git config --global core.safecrlf true
咦,怎么启动项目还不行呢?小伙伴们,注意哦!!!如果已经启动项目的话,记得重新pull代码,因为现有的代码格式已经转换了,需要重新配置下哦!
多操作系统平台协同开发时,git的注意事项:不要使用git的换行符自动转换功能,尽可能保证代码的换行符都是unix!
人最值得高兴的事:父母健在、知己两三、盗不走的爱人,其他都是假象,别太计较。
河南加油!中国加油!