关于git:LF-will-be-replaced-by-CRLF

131次阅读

共计 848 个字符,预计需要花费 3 分钟才能阅读完成。

前置常识

LF代表 linux 格调的行尾字符 \n
CRLF 代表 windows 格调的行尾字符\r\n

个别的代码托管服务器都是 linux 零碎,所以咱们的指标是这样:
无论你的开发人员是什么零碎,以什么换行结尾,到了代码托管零碎,对立以 linux 为规范,也就是 LF 结尾。

如何读取以后 git config core.autocrlf 的设置?

git config core.autocrlf

可能的值?

  • true
  • false
  • input

true

提交时:将 CRLF 转换为 LF
拉取时:将 LF 转换为 CRLF

false

提交时:什么都不做
拉取时:什么都不做

input

提交时:将 CRLF 转换为 LF
拉取时:什么都不做

windows 零碎该怎么做?

windows上的换行是以 CRLF 结尾的,这条命令很符合。

git config core.autocrlf true

linux 零碎该怎么做?

linux上的换行是以 LF 结尾的,这条命令很符合。

git config core.autocrlf input

我的项目中有 windows 和 linux 的开发人员该怎么做?

windows 用户设置

git config core.autocrlf true

linux 用户设置

git config core.autocrlf input

然而,上述的操作不太可控,比方我的项目外面成员有很多,我不可能挨个去叮咛并查看他们的设置。有没有更好的方法呢?
有,借助.gitattributes

在我的项目的根目录下增加一个.gitattributes 文件,内容如下:

// .gitattributes
* text eol=lf

下面的配置,意味着无论在什么操作系统上,当你检出文件时,所有的行结束符都会被转换为 LF。这样能够确保在不同操作系统之间进行合作时,文件的行结束符始终保持统一。

疑难

疑难 1:

git rm --cached -r .
git reset --hard

这不是重置 .gitignore 用的吗?这里须要吗?

疑难 2:

增加.gitattributes 后须要执行这个操作吗?

git add --renormalize .

正文完
 0