git提交不同平台文件的换行格式处理

1. CRLF和LF

git会通过CRLF和LF的配置来对源文件文本进行格式处理。

  • CRLF 是carriagereturnline feed的缩写,表示句尾使用回车换行两个字符(即我们常在Windows编程时使用"\r\n"换行),中文意思是回车换行。
  • LF line feed的缩写,中文意思是换行。表示表示句尾,只使用换行.
  • CR 表示只使用回车.

CRLF->Windows-style
LF->Unix Style/Mac Style

2. git命令配置

2.1. AutoCRLF

core.autocrlf是git中负责处理line endings的变量,可以设置三个值--true,input,false

#提交时转换为LF,检出时转换为CRLF
$ git config --global core.autocrlf true
#提交时转换为LF,检出时不转换
$ git config --global core.autocrlf input
#提交检出均不转换
$ git config --global core.autocrlf false
  • 设置为true,添加文件到git仓库时,git将其视为文本文件。它将把crlf变成lf,即windows格式转换为linux格式。

  • 设置为false时,line-endings将不做转换操作。文本文件保持原来的样子。

  • 设置为input时,添加文件git仓库时,git把crlf编程lf。当有人Check代码时还是lf方式。因此在window操作系统下,不要使用这个设置。

  • 建议设置方式

Windows:(true)
提交上传时,将CRLF 转成 LF再提交;
切出下载时,自动将LF 转为 CRLF;

MAC/Linux: (input)
提交时, 将CRLF 转成 LF再提交;
切出时,保持LF即可

2.2. SafeCRLF

#拒绝提交包含混合换行符的文件
git config --global core.safecrlf true
#允许提交包含混合换行符的文件
git config --global core.safecrlf false
#提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn

发表评论

邮箱地址不会被公开。 必填项已用*标注