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,不管换行符问题,其实最的方式是团队规定统一用一种换行符

posted @ 2024-07-13 19:24  !win !  阅读(209)  评论(0编辑  收藏  举报