LF will be replaced by CRLF
前置知识
LF代表linux风格的行尾字符/nCRLF代表windows风格的行尾字符/r/n
如何读取当前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的开发人员该怎么做?
一般的代码托管服务器都是linux系统,所以我们的目标是这样:
无论你的开发人员是什么系统,以什么换行结尾,到了代码托管系统,统一以linux为标准,也就是LF结尾。
让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 .