CRLF LF CR是啥
CRLF: carriagereturnlinefeed的缩写,回车换行的意思。Windows系统使用CRLF当做换行。
LF: line feed的缩写,换行意思。Unix(包含现在大量使用的linux)系统使用LF。
CR: carriagereturn的缩写,回车的意思。早期的mac系统使用CR当做换行,现在也已经统一成了LF。
出现的问题
不同平台的换行回车不一致,导致项目在不同平台下代码看上去无任何差别,然而通过git提交时会有如下提示
解决办法
- AndroidStudio全局换行设置
File > Line Separators
- 设置新建文件默认换行符
File > Settings > Code Style > General > Line separator
- 检查配置是否生效:打开任意文件或者新建文件,查看右下角
可能存在的其他问题
按照以上方法更改后可能会出现大量文件 Contents are identical
No differences
问题
查了一下大致还是换行问题,不过已经不影响了,建议将这些文件 (典型的不懂还爱瞎给建议)Rollback Changes
可以在终端中输入以下命令
- 提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf true
- 提交时转换为LF,检出时不转换
git config --global core.autocrlf input
- 提交检出均不转换
git config --global core.autocrlf false
如果把 autocrlf 设置为 false 时,那另一个配置项 safecrlf 最好设置为 ture。该选项用于检查文件是否包含混合换行符,其有三个可选项:
- 拒绝提交包含混合换行符的文件
git config --global core.safecrlf true
- 允许提交包含混合换行符的文件
git config --global core.safecrlf false
- 提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn