2011-10-10 156 views
2

我決定今天嘗試一下Git,試着學習它的分支系統是如何工作的。餿主意。我莫名其妙地在我犯下的一個分支變化的狀態得到了我自己,當我做「混帳推」我得到:完全卡在git中 - 「git push」不起作用,「git pull」也不能修復

To [email protected]:LAW/Repo.git 
! [rejected]  master -> master (non-fast-forward) 
error: failed to push some refs to '[email protected]:LAW/Repo.git' 
To prevent you from losing history, non-fast-forward updates were rejected 
Merge the remote changes (e.g. 'git pull') before pushing again. See the 
'Note about fast-forwards' section of 'git push --help' for details. 

我這個見過幾次,我已經做了「 Git拉「來解決,但我不知道爲什麼或如何解決事情。問題是,它現在不工作。我願意「混帳拉」,並得到:

"Already up-to-date." 

但問題依然存在。所以我的問題是......現在是什麼?我不能推動分支,所以它基本上是死的,但互聯網沒有比「git pull」更好的建議來解決這個問題。不用說這很令人沮喪!

編輯一位評論者請求輸出「git branch -a」。有問題的分支是「PersonalSite」

* PersonalSite 
master 
remotes/origin/HEAD -> origin/master 
remotes/origin/PersonalSite 
remotes/origin/master 
+0

之前'git的pull'嘗試'git的fetch' –

+1

@GregoryPakosz,'混帳pull'已經做一個'git fetch'。 – jamessan

+0

請告訴我們你實際上在哪個分支上(最好編輯你的問題以顯示'git branch -a'的輸出) –

回答

3

你應該能夠簡單地更新主分支:

git checkout master 
git pull 

驗證:

git checkout PersonalSite 
git push # Should say "Everything up-to-date" 
+0

之上加上了「git branch -a」的輸出。謝謝! – LAW

+0

你應該擴大你的結帳別名:它不能保證它會適用於每個人。 –

+0

@ l10i哎呀,甚至沒有注意到。修正了,謝謝! – phihag

0

被拒絕的分支是master分支。您不在master分支上,您在PersonalSite分支上,該分支(從git pull提供的輸出中)已經是最新的。

git push,沒有額外的參數可以以不同的方式(見git help configpush.default部分)進行配置。默認情況下,它會推送所有匹配的分支。在這種情況下,它試圖推送master,但master分支是而不是最新,因此推送失敗。錯誤信息有點誤導。

5

您拒絕的推送是主人 - >主人。但是你所在的分支是PersonalSite。這聽起來像你的主分支有一個本地提交,遠程沒有,但缺少遠程提交。但是,您正在嘗試在PersonalSite上登錄git pull。我不確定它試圖從哪個分支中提取,可能是origin/master(這取決於創建分支時可能設置的上游信息)。 git push不會嘗試推送PersonalSite,因爲默認情況下,它僅推送「匹配」分支(例如雙方已經存在的分支),而PersonalSite只存在於本地。

你想在這裏實現什麼?如果您想將PersonalSite推送到遠程,請使用git push origin PersonalSite。如果你想解決你的主分支,請檢查它,然後運行你的git pull(或者你想要做的任何事情來修復它)。