前置常识

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 .