Git core.autocrlf 配置说明

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

代码提交换行格式.png

出现这种情况是因为许多开发人员在协作时,特别是在跨平台情况下由于编辑器不同或者操作系统的不同,发生的行尾结束符问题。这是因为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.autocrlfgit中负责处理line endings的变量,可以设置三个值 true,input,false
设置成三个值会有什么效果呢?

  • core.autocrlf设置为 true,添加文件到git仓库时,git将其视为文本文件。他将把 CRLF变成LF
  • core.autocrlf设置为false时,line-endings将不做转换操作。文本文件保持原来的样子
  • core.autocrlf设置为 input时,添加文件git仓库时,git 把 crlf 编程LF。当有人 Check 代码时还 是LF方式。因此在 window操作系统下,不要使用这个设置。

参考文章:

  • git参考链接 :https://git-scm.com/book/zh/v2/%E8%87%AA%E5%AE%9A%E4%B9%89-Git-%E9%85%8D%E7%BD%AE-Git

  • github参考链接:https://docs.github.com/cn/github/getting-started-with-github/getting-started-with-git/configuring-git-to-handle-line-endings

你可能感兴趣的:(Git core.autocrlf 配置说明)