当git add .遇上换行符问题

来源:互联网 发布:圣艾尔摩之火 知乎 编辑:程序博客网 时间:2024/06/05 04:34

新建版本库的时候遇上了

The file will have its original line endings in your working directoryLF will be replaced by CRLF in ....

这样的警告。

查了一下网上的说法,原因总的来说是不同平台源代码换行符不一致和是git工具core.autocrlf属性的设置造成问题。而看的抄来抄去的说法总是在文字上有类似的歧义以及我总感觉是有被省略掉没说的话,所以按我自己的理解的(如果没有理解错的话),用自己能懂的文字记录一下:


对于git的core.autocrlf属性
如果是在Windows系统上,默认的或自己设置为true的情况,Git可以在你提交时自动地把行结束符CRLF转换成LF(前提是因为你的代码是采用windows换行符,而提交到库的需要是LF。这样说是不排除你从别处拷贝的代码本身就是LF),而在检出代码时再把LF转换成CRLF(转换成windows标准):
git config --global core.autocrlf true


Linux因为本身使用LF作为行结束符,因此如果库里代码本身为LF那你不需要Git在检出文件时进行自动的转换。但是如果在Linux上提交的文件为CRLF格式(原因同上为什么windows上会提交LF格式的文件)为了保证库里的代码始终为LF就需要把core.autocrlf设置成input来告诉Git在提交时把CRLF转换成LF,而检出时不转换(LF仍为LF)

git config --global core.autocrlf input

前面是建立在库里的代码必须保持LF格式

如果项目都是运行在Windows上的,可以设置false取消此功能。就是库和所有本地都是CRLF格式。

git config --global core.autocrlf false


但是如果在windows平台提交到库的文件时LF也希望在windows平台上的代码也和库里的一样是LF的,也需要执行这个操作,取消转换,虽然命令一致但是原因不同(这样虽然在windows平台但是库和本地都是LF)。


0 0