Git提交失敗之 Updates were rejected because the tip of your current branch is behind
錯誤顯示
D:\devworkspace\ecpphoton\jcodef>git push
To https://github.com/osxm/jcodef.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to ‘https://github.com/osxm/jcodef.git’
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: ‘git pull …’) before pushing again.
hint: See the ‘Note about fast-forwards’ in ‘git push --help’ for details.
錯誤產生過程
筆者在github上建立一個repository, 之後和本地的路徑關聯後提交程式碼出現以上錯誤。具體過程如下:
- 在 Github的頁面上:https://github.com, 建立一個repository
- 在本地通過Eclipse上建立一個Project, 或是一個已經存在的目錄也可以。
總之是把本地目錄進行Git 版本控管。
3.本地使用Git Cmd 切換到本地專案目錄之後Git 的初始化:
git init
4.新增遠端庫地址:
git remote add origin https://github.com/XXX/XXXXX.git
以上XXXX 替換成自己的。 這裡使用的是https 協議的, 也可以使用ssh 協議, 不過需要把ssh 的pubkey複製到github。
- 獲取遠端程式碼
git pull
出現如下頁面:
(注意了:問題就處在這一步了)
- 新增需要控管的檔案並提交到本地庫
git add *.java
git commit -m "oscar commit"
- 推送到遠端
git push
報本地分支沒有對應到遠端的分支的錯誤:
8.關聯遠端分支
git branch --set-upstream-to=origin/master
9.再進行git push推送到遠端,就出現的本文開頭的錯誤了。
提示就是本地分支比遠端分支的版本要後。回到上面的第5步, 雖然執行了git pull, 但是沒有關聯到遠端分支, 所以並沒有獲取遠端分支的最新版。
這時候是否重新pull一下就可以了呢?執行 git pull, 出現如下畫面:
拉取失敗, 拒絕merge 不相關的歷史, 因為本地也有提交。
解決辦法
- 方案一
使用允許無關聯的歷史記錄的引數拉取之後再 push
git pull origin master --allow-unrelated-histories
git push
2.方案二
git push -u origin master -f