在本人想把本地的分支推送到遠(yuǎn)程倉庫時,突然出現(xiàn)了錯誤提醒error: failed to push some refs to...。心里一咯噔,推不上去這還得了,手比腦快地就去google了一下。
然后就發(fā)現(xiàn),這個error發(fā)生的情況竟然還挺多樣化。鑒于自己搜到的頁面,都是分散的答案,所以在此做個總結(jié),以免日后又碰到這類錯誤,爛記性又促使我花費一樣的時間去尋找一樣的答案。
分支名不完整
emmm,這個錯誤大概是最難發(fā)現(xiàn)的了,不是說難度系數(shù)高,而是大家都把以本地master與遠(yuǎn)程master為例去寫答案,于是大家會下意識忽略掉本地分支與遠(yuǎn)程分支名不一樣的情況。(也可能只有我....)
git推送的完整寫法如下:
git push @remoteName @localBranch:@remoteBranch
// eg.remoteName:origin localBranch:ceshi remoteBranch:test
git push origin ceshi:test
但是如果本地分支與遠(yuǎn)程分支名字一樣的話,是可以簡寫的。例如本地和遠(yuǎn)程的分支名都是master:
git push origin master
如果確認(rèn)分支名沒有錯,那就繼續(xù)往下看
沒有提交代碼
可以用 git status查看是否忘了把代碼提交上去了。若是忘了,提交了就行。
git add .
git commit -m "This is a new commit"
git push origin master
本地與遠(yuǎn)程產(chǎn)生沖突
或是有其他協(xié)作者提交了代碼,或是你之前在遠(yuǎn)程上直接做了處理。這部分有兩個處理方法,一是直接強(qiáng)覆蓋,二是先把遠(yuǎn)程的變化拉取下來,解決沖突后,再一并提交。
- 強(qiáng)覆蓋
git push -f origin master - 拉取再提交
git pull –-rebase origin master git push origin master
當(dāng)然本人是建議能第二種就第二種,暴力美學(xué)越少見越好。
--rebase到底是干嘛用的,為什么要加他?不知道是什么意思的時候,用起來也忐忑。所以又特意去了解了一下這個配置的作用。這部分有個博主寫的詳細(xì)又直觀:https://blog.csdn.net/MBuger/article/details/70197532
我就不啰嗦了。嘻嘻。