美文网首页
git设置core.autocrlf

git设置core.autocrlf

作者: 霍霍Missyou | 来源:发表于2019-02-25 18:13 被阅读0次

背景:

使用虚拟机共享windows文件夹,文件夹中用git clone 一个仓库。在linux下编辑文件,用git status发现几乎所有的文件都为修改状态。

原因:

windows下和linux下的文本文件的换行符不一致。

windows:两个字符,CR+LF,即一个回车,一个换行

linux及OS X:一个字符,LF,在Linux下查看文件如下所示,多了个^M

思考:

仓库中是Linux下提交的代码,那么应该是LF结尾的,那么windows下clone下来的应该也是LF结尾才对。那么是什么导致windows下变为CRLF格式结尾呢?

答:是因为git的一个设置导致的。core.autocrlf。

在windows下,git安装时,默认该选项为true,那么效果是从仓库下载下来,结尾会改为CRLF格式。当提交文件到仓库时,会将CRLF格式转为LF。那么是可以保证仓库中的文件是LF结尾的。这样Linux下编辑和windows下编辑都不影响了。

结论:

也就是说,我用不同的git设置,操作了同一个文件夹,那么表现肯定就不一样了。

windows下面设置该项为true到底好不好,好像是方便了windows开发者,但这种同一个文件夹如果拷贝到Linux系统或者苹果下面去,就会有问题了。

最佳实践:

现在主流编辑器都能够自动识别换行符为LF还是CRLF,如VS code,Notepad++等等。

个人认为windows下开发将编辑器默认设置为LF格式,git 该项设置为false是最好了。

如VSCode,在settings中设置file:eol 选项为\n

参考链接:

https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

https://stackoverflow.com/questions/1967370/git-replacing-lf-with-crlf

https://help.github.com/en/articles/dealing-with-line-endings

相关文章

网友评论

      本文标题:git设置core.autocrlf

      本文链接:https://www.haomeiwen.com/subject/hdagyqtx.html