Git的格式化与空白
1) 问题的产生
格式化与空白是在跨平台情况下,多人协作开发时,遇到的令人头疼的细小问题
由于IDE的不同或者Windows程序员在跨平台项目中的文件行尾加入了回车换行符,这个细微的空格变化会不经意地进入大家合作的工作或提交的补丁中,在这种情况下,就可能会遇到行尾结束符问题
这是因为Windows使用回车和换行两个字符来结束一行,而Mac和Linux只使用换行一个字符。虽然这是小问题,但它会极大地扰乱跨平台协作
2) CRLF
CRLF是Carriage-Return Line-Feed的缩写,意思是回车换行,也就是回车(CR, ASCII 13, \r) 换行(LF, ASCII 10, \n)
这两个ACSII字符不会在屏幕有任何输出,在Windows中它被用来标识一行的结束;而在Linux或Mac系统中只有换行符来标识一行的结束
3) 解决办法
(0) Git配置
Git可以在你提交代码时自动地把行结束符CRLF转换成LF,而在检出代码时把LF转换成CRLF
⑴ 在Windows系统上与其他系统协作开发
用core.autocrlf来打开此项功能,如果是在Windows系统上,把它设置成true,这样当检出代码时,LF会被转换成CRLF:
$ git config –global core.autocrlf true
⑵ 在Linux或Mac系统上与其他系统协作开发
Linux或Mac系统使用LF作为行结束符,如果你不想Git在检出代码时进行自动的转换,把core.autocrlf设置成input来告诉Git在提交代码时把CRLF转换成LF,检出时不转换:
$ git config –global core.autocrlf input
这样在Windows系统上检出的代码会保留CRLF;而在Mac和Linux系统上,以及仓库中保留LF。
⑶ 团队都是在Windows系统上开发
如果在Windows系统上开发程序,且正在开发仅运行在Windows上的项目,可以设置false取消此功能,把回车符记录在库中:
$ git config –global core.autocrlf false
4) IDEA的配置
IDEA提交代码
IDEA设置换行符号