1. 程式人生 > >Git提交失敗之 Updates were rejected because the tip of your current branch is behind

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, 之後和本地的路徑關聯後提交程式碼出現以上錯誤。具體過程如下:

  1. 在 Github的頁面上:https://github.com, 建立一個repository
  2. 在本地通過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。

  1. 獲取遠端程式碼
git pull

出現如下頁面:
在這裡插入圖片描述
(注意了:問題就處在這一步了)

  1. 新增需要控管的檔案並提交到本地庫
git add *.java
git commit -m "oscar commit"
  1. 推送到遠端
git push

報本地分支沒有對應到遠端的分支的錯誤:
在這裡插入圖片描述

8.關聯遠端分支

git branch --set-upstream-to=origin/master

9.再進行git push推送到遠端,就出現的本文開頭的錯誤了。
提示就是本地分支比遠端分支的版本要後。回到上面的第5步, 雖然執行了git pull, 但是沒有關聯到遠端分支, 所以並沒有獲取遠端分支的最新版。

這時候是否重新pull一下就可以了呢?執行 git pull, 出現如下畫面:

在這裡插入圖片描述

拉取失敗, 拒絕merge 不相關的歷史, 因為本地也有提交。

解決辦法

  1. 方案一
    使用允許無關聯的歷史記錄的引數拉取之後再 push
    git pull origin master --allow-unrelated-histories
    git push

2.方案二
git push -u origin master -f