情况一
git pull遇到错误:error: Your local changes to the following files would be overwritten by merge
由于你跟别人改了同一份文件,所以pull代码的时候会这样。
解决方法1:可以保留本地改动
git stash //保存当前工作进度,会把暂存区和工作区的改动保存起来
git pull origin master
git stash pop
如此一来,服务器上的代码更新到了本地,而且你本地修改的代码也没有被覆盖,之后使用add,commit,push 命令即可更新本地代码到服务器了。
拓展
git stash save 'message...'可以添加一些注释
git stash list 显示保存进度的列表。也就意味着,git stash命令可以多次执行。
git stash clear删除所有存储的进度。
git stash pop [–index] [stash_id]
git stash pop 恢复最新的进度到工作区。git默认会把工作区和暂存区的改动都恢复到工作区。
git stash pop --index 恢复最新的进度到工作区和暂存区。(尝试将原来暂存区的改动还恢复到暂存区)
git stash pop stash@{1}恢复指定的进度到工作区。stash_id是通过git stash list命令得到的
通过git stash pop命令恢复进度后,会删除当前进度。
解决方法2:不保留本地改动
git reset --hard
git pull origin master
参考:
https://blog.csdn.net/misakaqunianxiatian/article/details/51103734
https://blog.csdn.net/anhenzhufeng/article/details/78052418
https://blog.csdn.net/daguanjia11/article/details/73810577
情况二
本地branch1已改动,但是不想提交,想要从master上重新建分支branch2
在branch1上保存已改的东西:git stash
切换到master上:git checkout master
在master分支上新建branch2:git checkout -b branch2
这样branch2上的内容就跟master上一样了。
参考