ilife5 / life

life is a beautiful che~
4 stars 5 forks source link

CRLF LF CR ^M都是什么鬼? #34

Closed ilife5 closed 9 years ago

ilife5 commented 9 years ago

CR = Carriage Return ASCII code 13 \r 回车

LF = Line Feed ASCII code 10 \n 换行

传统打印机上,书写下一行文字的时候需要进行两个操作,先把打印指针回到行首,纸张向上移动一行,这样就构成了两个操作,回车以及换行。

计算机系统中,不同的操作系统使用了不同的换行符,linux使用LF,windows使用CRLF,os使用CR。

可能出现的问题:不同用户使用不同系统向仓库中提交代码时,附加的换行符是不同的,会对文件比较结果产生影响。比如用户在编辑器中设置的换行符为CRLF,代码仓库为LF,git在diff时,将会认为整个文件已经被修改。

解决办法:通过git中的配置项配置提交的代码为统一的换行格式。

//windows中配置,在检出时使用CRLF,提交时使用LF
git config --global core.autocrlf=true

//mac中配置,在检出时使用源代码中的换行符,提交时使用LF
git config --global core.autocrlf=false

如果源代码本身就是CRLF的换行符,可以使用工具对其进行处理为LF的换行符:

//os上
brew install dos2unix
find -f ./ | xargs dos2unix -o
ilife5 commented 9 years ago

^M就是CRLF