在使用git pull命令拉取代码时,有时会遇到以下错误信息:
error: Your local changes to the following files would be overwritten by merge:
...
Please commit your changes or stash them before you merge.
Aborting
Updating 1d17a2c5..3de3e123
解决方法:
一、根据提示,可以直接commit你的修改
二、使用stash处理
1、git stash 先将本地修改存储起来
git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
其中stash@{0}就是刚才保存的标记。后续可以通过此标记访问。
2、git pull 再次拉取代码
3、git stash pop 还原暂存的内容
git stash pop: 默认为git stash pop stash@{0},从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从哪个地方恢复。
4、解决冲突
然后可以使用git diff -w +文件名 来确认代码自动合并的情况,并作出相应修改。
在存在冲突的文件中,Updated upstream 和=====之间的内容为拉取下来的代码,=====和stashed changes之间的内容就为本地修改的代码。解决完成之后,就可以正常的提交了。
5、删除stash
使用git stash drop stash@{0}命令,如果不加stash编号,默认的就是删除最新的,即编号为0的。
git stash clear: 清空Git栈,清除所有stash。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。