远程推送报错
-
我们在本地向远程仓库推送代码时,总会不可避免地出现报错
-
我们必须要明确的一点是:推送代码,是本地向远程仓库推送
-
远程推送代码,就是把本地的代码同步更新到远程仓库中,使远程代码与本地代码保持一致
大白话讲,就是允许本地代码比远程代码多一部分, 即远程仓库有的代码,本地仓库必须有;远程仓库没有的,本地仓库也可以有
-
了解了这个,理解远程推送报错原因就比较轻松了
-
引起远程推送错误的原因有很多,接下来我们会一一罗列出引起报错的各种情况,再逐个给出解决方法
本地仓库未同步
原因
-
情景:我们希望将本地已经写好的代码,推送到远程仓库托管
-
那我们就需要在新建仓库,而新增的仓库,我们一般都勾选添加 readMe.md文件
-
这时,我们在本地当然是这样操作了:
git init
git remote add origin 【远程仓库地址】
git add .
git commit -m ""
git push origin master
-
但这时,会报错:
! [rejected] master -> master (fetch first) error: fail to push some refs
-
导致问题出现的原因是因为:远程代码里存在readMe.md文件
-
什么意思呢?我们在前面提到过,仅允许本地代码比远程代码多一部分,而现在,远程代码存在readMe.md文件,但本地没有
-
此时,我们把远程仓库的readMe.md文件理解为多余文件,这种远程推送报错原因归类为本地仓库未同步
-
我们的解决方法是:在远程推送之前,先将远程仓库的多余文件拉取至本地,同步两个仓库
解决方法
-
在执行 push 之前,执行以下代码即可:
-
在 push 之前执行下面的代码:
git pull --rebase origin master
- 问题成功解决,附一张图,便于理解: