我当时遇到的问题
git是一个分布式版本控制系统,可以运用到团队的开发管理。在团队开发中,无法避免会出现跨系统开发的情况,即团队成员有的人用的是Linux系统,有人用mac,有人用windows,本人运用的是windows系统,用git拉下代码启动后总会出现大量的 error Delete ␍ prettier/prettier
报错。
分析原因
我报这些错的原因是使用的windows系统默认换行符为crlf,即’\r\n’,而用git拉下来的项目管理在linux系统上,默认换行符为lf,即’\n’。
解决办法
-
你可以使用git config --list命令查看core.autocrlf配置项,我这里配置的值是true,对于我这种情况,这不是最好的选择。
-
core.autocrlf配置项
这个配置项的值有三项:true, false, input。这里涉及到两个阶段,假设一个场景,你需要从远端(以LF结尾)上拉下来一个项目(你的电脑是windows系统,以CRLF结尾),后来你想把它推上去。这两个阶段就是拉下来与推上去。
例如远端LF与windows电脑CRLF:
true情况下,远端->本地,LF->CRLF,本地->远端,CRLF->LF
false情况下,远端->本地,LF->LF,本地->远端,CRLF->CRLF
input情况下,远端->本地,LF->LF,本地->远端,CRLF->LF
综上所述,对于这个例子,所以配置成input是最好的选择。 -
使用git config --global core.autocrlf input命令更改配置项,如果你很疑惑这个命令为什么是这样的,可以点这里。
经过以上操作后,能保证拉回到本地的代码换行符与远端匹配,但是如果你使用vscode写这个拉回来的代码,还要注意vscode编辑器本身的crlf配置规则。
我遇到的情况是,拉回到本地后没什么问题,但是在vscode编辑器里启动时会报格式错误。
我的解决办法是下载一个插件:
再去根目录配置一个.editorconfig文件:给对应文件类型下(我是所有文件类型,[*])加上一句end_of_line = lf
,经过这样的配置后,对应文件类型的换行会按照lf进行换行。