2009-06-03 92 views
3

我今天遇到了git push的問題。我試圖將一個分支推送到遠程存儲庫,但它給出了一個錯誤。爲什麼git push有時需要一個localref參數?

一些搜索後,我問它的git的IRC頻道,有人說,推的語法是

git push <remote> <localref>:<remoteref> 

到現在爲止,我只是用它工作得很好混帳推。但在這種情況下,它失敗了。

我試着把比主遠程服務器上的其他一些分支,我得到了以下錯誤:

error: src refspec xi-temp-dennis does not match any. 
error: failed to push some refs to 'remote.server' 

通過指定localRef所,它突然worken。

我的問題是,爲什麼我這次需要指定localref?

回答

4

如果你只是簡單的「git推遠程」沒有指定任何參考推,那麼Git將推所有「匹配分支」。 「匹配分支」是本地回購分支的名稱與遠程回購分支的名稱相同的分支。遠程倉庫的分支將使用本地倉庫的匹配分支進行更新。因此,如果你只有一個「主」分支,並且遠程回購還有一個「主」分支,那麼只要簡單的「git push remote」就會將本地主設備推送到遠程主設備。

您已經創建了一個新的分支「xi-temp-dennis」,它不能存在於遠程倉庫中。因此,Git無法成功執行推送匹配分支的默認行爲(因此「不匹配任何」錯誤)。

你需要告訴Git的裁判的名字應該是在遠程端的東西,它會創建它:

 
git push remote xi-temp-dennis:foo 

這將創建一個名爲將被更新爲「foo」遠程分支。但是,它的名稱與您本地分支的名稱不匹配,所以您始終需要輸入相同的命令(使用xi-temp-dennis:foo)才能推送更新。如果你希望能夠只需鍵入「混帳推遠程」,並有更新工作,那麼你應該命名遠程分支一樣的地方之一:

 
git push remote xi-temp-dennis:xi-temp-dennis 
+0

是啊,我剛剛纔明白。當我做git push remote xi-temp-dennis時,它會在我的本地存儲庫中尋找名爲xi-temp-dennis的分支,而我認爲它會指定遠程存儲庫上的分支。 – Ikke 2009-06-03 20:19:31

相關問題