前置常识
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 .