菜鸟笔记
提升您的技术认知

Git常见报错:Your local changes to the following files would be overwritten by merge

1、报错原因

该报错在git pull时出现,一句话解释就是你在本地改动了代码但是还没有提交,此时再拉取最新代码,远程代码和你当前的本地代码发生冲突!(注意有冲突时才会提示,如果没有冲突,则git pull成功,因为git pull实质上就是一个远程分支merge到本地分支过程。

2、解决方案

  • 本地代码commit后再pull(推荐)
//先把当前修改的工作区内容提交了
git add .
git commit

//拉取最新代码,这里就相当于两个已提交分支的合并了,有冲突解决冲突,没冲突就pull成功
git pull

//解决完冲突后,继续完成自己的本地代码

//完成以后,add/commit/push三连到远程库
git add
git commit
git push

***这样就实现了开发过程中,将远程最新改动合到了我本地,然后我基于最新代码接着开发
***该方法的缺点是会多出一条额外提交记录(pull之前的这次提交)
  • stash
//备份当前的工作区的内容,让工作区变为和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中
git stash

//拉取最新代码(依然有可能有冲突,如果有就手动解决冲突)
git pull

//从Git栈中读取最近一次保存的内容,恢复工作区的相关内容
//这样就相当于是基于远程库最新版本修改了
git stash pop

***注意,最后恢复暂存区的时候可能与最新代码有冲突,此时仍需要手动解决冲突
***该方法虽然没有多余提交记录,但稍微麻烦一点

3、总结

每次在本地开始修改代码时,养成先git pull拉取版本库最新改动的习惯,就不会遇到这个报错了。