最近在开发中提交代码时,IDEA提示core.autocrlf
的配置,如下图:

出现这种情况是因为许多开发人员在协作时,特别是在跨平台情况下由于编辑器不同或者操作系统的不同,发生的行尾结束符问题。这是因为Windows使用回车和换行两个字符来结束一行,而Mac和Linux只使用换行一个字符。虽然这是小问题但它会极大扰乱大家的协作。
CRLF and LF
-
CRLF
是Carriage-Return Line-Feed 回车换行 -
LF
是 line feed 的缩写,中文意思是换行
三种方式处理的不同
-
CRLF
->Windows-style -
LF
->Unix Style -
CR
->Mac Style -
CRLF
表示句尾使用回车换行两个字符(即我们常在Windows编程时使用"\r\n"
换行) -
LF
表示表示句尾,只使用换行 -
CR
表示只使用回车
在 Git 中转换
-
Git
可以在你提交时自动地把行结束符CRLF
转换成LF
,而在签出代码时把LF
转换成CRLF
。用core.autocrlf
来打开此项功能,如果是在Windows系统
上,把它设置成true
(默认配置),这样当签出代码时,LF
会被转换成CRLF
:
git config --global core.autocrlf true
Linux 或 Mac系统
使用LF
作为行结束符,因此你不想 Git
在签出文件时进行自动的转换;当一个以CRLF
为行结束符的文件不小心被引入时你肯定想进行修正,把core.autocrlf
设置成input来告诉 Git
在提交时把CRLF
转换成LF
,签出时不转换:
git config --global core.autocrlf input
这样会在Windows系统
上的签出文件中保留CRLF
,会在Mac 和 Linux系统
上,包括仓库中保留LF
。
- 如果你是Windows程序员,且正在开发仅运行在Windows上的项目,可以设置
false
取消此功能,把回车符记录在库中:
git config --global core.autocrlf false
解释:
core.autocrlf
是git
中负责处理line endings
的变量,可以设置三个值true
,input
,false
设置成三个值会有什么效果呢?
core.autocrlf
设置为true
,添加文件到git
仓库时,git
将其视为文本文件。他将把CRLF
变成LF
core.autocrlf
设置为fals
e时,line-endings
将不做转换操作。文本文件保持原来的样子core.autocrlf
设置为input
时,添加文件git
仓库时,git 把 crlf 编程LF
。当有人 Check 代码时还 是LF
方式。因此在window操作系统
下,不要使用这个设置。
参考文章:
网友评论