2010-08-30 95 views
13

git push origin master顯示錯誤我不能推Git?

未能一些裁判推到'[email protected]:xyz/abc.git' 爲了防止丟失歷史,非快速向前更新被拒絕 再次前推合併遠程修改。有關詳細信息,請參閱' 快速前進'的'git push --help'部分。

這是什麼?如何恢復?

+2

你「看‘混帳推--help’的細節部分的‘關於快進筆記’」?這裏有點太冗長,但它描述了確切的問題,以及ascii藝術圖 – 2010-08-30 06:37:54

回答

28

"pushing a branch" section from GitHub help page

與「非快進」的錯誤

不時打交道,你可能會遇到這個錯誤,同時推動:

$ git push origin master 
To ../remote/ 
! [rejected]  master -> master (non-fast forward) 
error: failed to push some refs to '../remote/' 
To prevent you from losing history, non-fast-forward updates were rejected 
Merge the remote changes before pushing again. See the 'non-fast forward' 
section of 'git push --help' for details. 

這個錯誤起初可能有些壓倒,d o沒有恐懼。
簡而言之,git無法在不丟失提交的情況下在遠程進行更改,因此它拒絕推送。通常這是由另一個用戶推送到同一分支引起的。
您可以通過獲取和合並遠程分支或使用拉來同時執行這兩項操作來解決此問題。

在其它情況下該誤差是通過使用像git commit --amendgit rebase命令本地製造破壞性變化的結果。
雖然你可以覆蓋添加--force於推命令遠程,你應該只能這樣做,如果你是絕對肯定這是你想要做什麼。強制推送可能會導致對已獲取的遠程分支,被認爲是不好的做法,其他用戶的問題。如有疑問,請勿強行推送。


"Note about fast-forwards" of git push模式的細節,如在評論中提到的Michael Mrozek

3

很重要:如果你是在(與要合併)的分支,分支的名稱上游是不一樣的,這也可能發生。然後,工作流程如下所示:

git pull --rebase    # to retrieve upstream changes, replay yours on top 
git push --dry-run --verbose origin HEAD:master # always good idea: dry-runs.. 
git push origin HEAD:master # actually push current branch head (non-master) to upstream master 
2

如果您收到此錯誤和您的錯誤。混帳/ config文件就好了然後再通過這些步驟(這是在混帳回購的子模塊一個共同的問題 - 再次做到這一點從子模塊目錄)

  1. git的結帳主
  2. 混帳拉
  3. (合併在後臺發生)
  4. 混帳推
+0

我不太確定你在這裏想說什麼?請更清楚解釋。 – 2012-11-09 14:41:00

+0

他試圖看看你是否試圖從分支推送並獲得拒絕信息,按照步驟,一切都會好......這對我來說就像一個冠軍......謝謝jclaan ...是的它做到了在後臺合併 – zee 2015-10-02 15:29:56

5

除了VonC的回答,

萬一你,INTE nd覆蓋您的本地遠程更改,

$git push --force 

會做。

+0

正如VonC的回答所言:「雖然您可以通過向push命令添加--force來覆蓋遠程,但只有在您確信這是您想要執行的操作時才應該這樣做。」 – Intrications 2013-02-08 11:37:14

2

先拉然後按

的git拉出身any_branch_name

0

我有這個也是一樣,無法與以下有用的金塊明確指出地方找到StackOverflow上:的Git不會讓你推如果您的工作分支已從其分支分支到不同的分支。有一個簡單的解決方法 - 只需切換到要推入的分支並將工作分支合併到其中。因此,而不是試圖這樣:

git push origin master <========== On "mybranch" 

這樣做:

git checkout master  <========== Switch to the branch you want to push to 
git pull origin master <========== Get latest from remote repository 
git pull origin mybranch <========== Merge in changes from "mybranch" 
======== Resolve any issues ======== 
git push origin master <========== Push the merged changes