likes
comments
collection
share

记录git问题的一个解决方法

作者站长头像
站长
· 阅读数 14

“我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第n篇文章,点击查看活动详情

前言

今天同步其他仓库代码的时候,ctrl c + ctrl v最原始的方式,发现很多文件其实没有更改,git也显示在更改列表中,这样就导致公司的ci流程过不去,因为旧文件有很多的语法规范没有更改,公司的ci会检测每次git提交更改的文件,这个就导致了检测到了没有更改的文件

可以看到在vscode中git会显示这个文件是更改的状态,但是打开文件比对实际上是一样的情况

记录git问题的一个解决方法

解决方案

就是如何把为更改的文件不添加到更改列表,这个应该是和git的某个配置有关系,通过百度

通过GIT GUI发现,实际上每一行都出现了更改

记录git问题的一个解决方法

要显示这种看不见的更改,我们通过git命令可以看见

git diff --word-diff-regex=. |

记录git问题的一个解决方法

如果你细心观察,你会发现每一行后面都会有个^M符号。

出现这个符号的原因很简单,因为这个文件你在windows平台下编辑过,我们知道在windows平台下,换行符是\r\n,

而在linux下是\n,这多出来的\r被vim解释成了^M

mac或linux下

$ git config --global core.autocrlf input

windows下

$ git config --global core.autocrlf true

通过上面的设置,未更改的文件就不会显示在changes的列表里面了

git pull

记录git问题的一个解决方法 执行git status发现working tree没有任何文件有变化,这个文件夹的名字是reNew,后面改成了renew,可能是因为core.ignorecase没有设置为true导致的

$ git config core.ignorecase true

设置之后git pull就可以了

总结

百度的时候去搜对应的文章都五花八门的解决方法,都提到了到了这个配置问题,但是我确实不知道真正导致的出现问题的原因,通过不断的验证才发现是系统层面导致的原因,后面在发现问题的时候记录下来解决过程可以更好的提升我们应对问题的能力