# 起因
日常开发过程中,前端同学有的用macos,有的用windows,这两个平台在处理文件换行符的时候,默认会用不同的处理方式。
在windows上,如果你不做一些设置的话,默认将文件换行符设置为CRLF
,然而在macos等类unix系统上,则是将文件换行符默认设置为LF
这个选项,这样,别人提交的代码是LF
格式的换行(macos),你提交的代码是CRLF
格式的(windows),就会造成“冲突”啦。
这种冲突的表现就是我明明一行代码都没改,但是整个文件上半部分是红色,下半部分是绿色?其实是因为git认为你的所有换行符改掉了,从而识别出来的。
# 解决方法
我使用的解决办法就是默认都采用LF
格式的代码,无论是本地的代码还是提交到远程的代码。
# (1)查看文本换行的办法
使用vscode开发的同学可以看vscode的右下角有个地方显示了换行的标准。
从这个地方就可以看到文件换行的方法了。 点击这个LF,可以看到一个切换的地方,可以把本文件的换行标准给改掉了。
# (2)如何改变默认换行标准
虽然上面这个方法可以改变一个文件的换行字符,但是windows上默认创建个文件是CRLF的,总不能创建一个再转吧,其实vscode是有这个设置的:
打开设置选项,添加一行配置:
"files.eol": "\n"
1
这样就可以保证新创建的文件使用的是LF
标准作为换行符。
# (3)确保git不会帮你转换格式
其实git也知道这两个平台的差别,因此有一套关于这个的配置,就是core.autoclrf
这个选项,这个选项有如下配置:
- true 提交时转换为LF,检出时转换为CRLF
- false 提交检出均不转换
- input 提交时转换为LF,检出时不转换
我们只需要将这个属性设置成下面这样就可以了
git config --global core.autocrlf false
1
# 总结
共同开发项目的时候遇到一些git上面的冲突其实还是挺让人恼火的,我就因为这个被队友把写的代码都弄没了。知道这个坑以后,下次开发就可以提前配置好环境(一般是windows环境做配置),流畅开发项目。