Git因换行符不一致导致反复有修改记录
前情
Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理,我公司目前都是基于Git来管理项目代码。
坑位
最近刚刚入职一家新公司,本地环境都配好后,我git clone代码后,只是简单的浏览了代码,发现git就有了修改记录,而且是整个文件都是被修改了,一看只是换行符不同。
Why?
这个问题是由于不同的操作系统使用不同的换行符导致的。例如,Windows 系统使用 CRLF(回车换行)作为换行符,而 Linux 和 MacOS 系统使用 LF(换行)作为换行符。
解决方案
我们只要修改Git的配置即可
方案1:
打开命令行,执行如下命令即可:
Git 有一个全局配置项叫做 core.autocrlf
,它可以控制 Git 在提交和检出时是否对换行符进行转换。它有三个可选值:
true
:表示在提交时将 CRLF 转换为 LF,在检出时将 LF 转换为 CRLF 。这个选项适合 Windows 用户使用。input
:表示在提交时将 CRLF 转换为 LF,在检出时不进行转换。这个选项适合 Linux 和 MacOS 用户使用。false
:表示不进行任何转换。这个选项适合想保持原始换行符不变的用户使用。
git config --global core.autocrlf [input | true | false]
方案2:
也可以直接修改.git/config文件
[core]
autocrlf = [input | true | false]
方案3:
除了 core.autocrlf
之外,还有一个配置项叫做 core.eol
(end of line),它可以指定仓库中文件使用哪种换行符。它有三个可选值:
lf
:表示仓库中文件使用 LF 作为换行符。crlf
:表示仓库中文件使用 CRLF 作为换行符。native
:表示仓库中文件使用当前操作系统默认的换行符。
git config --global core.eol [lf | crlf | native]
方案4:
也可以直接修改.git/config文件
[core]
eol = [lf | crlf | native]
总结
上面4种方案其实是二种方式,一种是怎么转换换行符,一种是怎么规定用哪一种换行符,我选择的是第一种autocrlf为false,不管换行符问题,其实最的方式是团队规定统一用一种换行符
好好学习!天天向上!