起因
平常自己使用MAC来开发项目,但是有一天电脑罢工,无奈暂时使用了window电脑,在开发完成后想提交代码时,git就发出了一个警告:fatal: CRLF would be replaced by LF …一眼就明白了,想起来不同操作系统的行尾符号不同,windows下是CRLF,而MAC则是LF
分析
先去搜索了一些资料,了解到git可以设置如下配置项:
# 拒绝提交包含混合换行符的文件
git config --global core.safecrlf true
# 允许提交包含混合换行符的文件
git config --global core.safecrlf false
# 提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn
# 提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf true
# 提交时转换为LF,检出时不转换
git config --global core.autocrlf input
# 提交检出均不转换
git config --global core.autocrlf false
首先看第一个,这里我希望无论何时,只要发现有混合换行符就拒绝提交,不然当checkout 代码的时候肯定是满屏的diff,这不是我想要的。
其次,看一下团队的同学大多使用的也是MAC,所以这里我就少数服从多数,确保提交到git仓库的都是LF即可。
解决方法
我是这样配置的
git config --global core.safecrlf true
git config --global core.autocrlf input
第一个原因:我需要始终保证文件内容没有包含混合的换行符
第二个原因:这里服从多数情况,所以检出时我不转换,但是提交要变成LF
为了万无一失,我还想要在本地开发时,使用的换行符号就是LF,这个可以通过IDE本身的设置来实现,比如我使用的是Vscode。可以去偏好设置里面点击设置,然后搜索files.eol,选择LF即可。
也可以根据自己的实际情况来选择具体的配置~