CRLF这个东西(姑且这么叫吧?) 第一次见到是在初涉git的时候.
基于windows上使用时, 有一步基本配置是这样的:
git config --global core.autocrlf false
git config --global core.safecrlf true
当时只知道是windows与linux的换行有差异会导致代码导入导出有问题,也没深究.
今天来好好聊一聊.(特么地玩idea git的时候又碰到了…)
背景
我用idea写完一个git托管的项目中的一个功能,准备commit一下.弹出一个框:
虽然没碰过, 但大致也猜到了什么意思.
基于我电脑开始的配置,这里commit时有了一个问题, 问你想怎么提交修改中的换行.要不要git给你自动转换(CRLF to LF), 或者按你自己的配置(false)来?
这里是选true. 选择 [ Fix and Commit ]
下面附上一些查到的资料,当做笔记了.
windows : CRLF( 回车换行 \r\n )
Linux/Unix: LF (换行 \n)
Mac: LF(现在是换行, 以前是回车( Classic Mac )CR, \r )
1
Git可以在你提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF。用
core.autocrlf
来打开此项功能,如果是在Windows系统上,把它设置成true
,这样当签出代码时,LF会被转换成CRLF:
$ git config --global core.autocrlf true
2
Linux或Mac系统使用LF作为行结束符,因此你不想 Git
在签出文件时进行自动的转换;当一个以CRLF为行结束符的文件不小心被引入时你肯定想进行修正,把core.autocrlf
设置成input来告诉
Git 在提交时把CRLF转换成LF,签出时不转换:
$ git config --global core.autocrlf input
3
这样会在Windows系统上的签出文件中保留CRLF,会在Mac和Linux系统上,包括仓库中保留LF。
如果你是Windows程序员,且正在开发仅运行在Windows上的项目,可以设置
false
取消此功能,把回车符记录在库中:
$ git config --global core.autocrlf false
没看懂就算了, 你记得如果是windows你就配置下:
$ git config --global core.autocrlf true
就行了.
Linux不会问这个的,都是默认.(嗯,我猜是这样~~)