如果在修改完本地仓库后push到远程仓库发现push失败,问题显示如下:
这是因为远程仓库已经更新了。需要用git pull拉取远程分支,先让本地仓库和远程仓库同步。
但是在pull的时候又可能存在以下情况:
本地仓库的文件已经更改:
分为几种情况
本地新增了文件:
pull成功,不会影响新增的文件,将远程修改的内容直接应用到本地
本地删除了文件:
pull 成功,本地已经删除的文件不会重新生成,只是将远程修改的内容直接应用到本地
本地修改了远程仓库中存在的文件
又有两种情况:
- 本地修改之后commit提交了:
pull失败,提示Automatic merge failed; fix conflicts and then commit the result.(自动合并失败;改正矛盾处然后提交)
解决:可以打开出现矛盾的文件查看,将修改文件成为你想保留的样子,然后再重新commit 之后pull,就算是和远程仓库同步了。- 本地修改之后没有commit:
这种情况可以针对以上所有情况,没有commit的内容是不会受到pull的影响的。但是不commit的话是无法push的,所以必然要commit,就和第1中情况一样了。
总结一下,在远程仓库和本地仓库都发生了变化后想要将本地修改提交到远程的流程:
- git add . git commit提交本地仓库
- git pull拉取远程仓库,提示不能自动合并
- 手动解决矛盾,修改文件后再次git add. git commit
- git push成功