在本人想把本地的分支推送到远程仓库时,突然出现了错误提醒error: failed to push some refs to...
。心里一咯噔,推不上去这还得了,手比脑快地就去google了一下。
然后就发现,这个error发生的情况竟然还挺多样化。鉴于自己搜到的页面,都是分散的答案,所以在此做个总结,以免日后又碰到这类错误,烂记性又促使我花费一样的时间去寻找一样的答案。
分支名不完整
emmm,这个错误大概是最难发现的了,不是说难度系数高,而是大家都把以本地master与远程master为例去写答案,于是大家会下意识忽略掉本地分支与远程分支名不一样的情况。(也可能只有我....)
git推送的完整写法如下:
git push @remoteName @localBranch:@remoteBranch
// eg.remoteName:origin localBranch:ceshi remoteBranch:test
git push origin ceshi:test
但是如果本地分支与远程分支名字一样的话,是可以简写的。例如本地和远程的分支名都是master:
git push origin master
如果确认分支名没有错,那就继续往下看
没有提交代码
可以用 git status
查看是否忘了把代码提交上去了。若是忘了,提交了就行。
git add .
git commit -m "This is a new commit"
git push origin master
本地与远程产生冲突
或是有其他协作者提交了代码,或是你之前在远程上直接做了处理。这部分有两个处理方法,一是直接强覆盖,二是先把远程的变化拉取下来,解决冲突后,再一并提交。
- 强覆盖
git push -f origin master
- 拉取再提交
git pull –-rebase origin master git push origin master
当然本人是建议能第二种就第二种,暴力美学越少见越好。
--rebase
到底是干嘛用的,为什么要加他?不知道是什么意思的时候,用起来也忐忑。所以又特意去了解了一下这个配置的作用。这部分有个博主写的详细又直观:https://blog.csdn.net/MBuger/article/details/70197532
我就不啰嗦了。嘻嘻。