2016-12-28 113 views
1

我讀過這篇文章How do I check out a remote Git branch?十幾次,但仍然沒有解釋我所看到的。我試圖設置最基本的可能場景來嘗試git遠程分支,所以我創建了一個回叫,其中包含一個master和一個叫做branch的分支1.0,並將其克隆到另一個回購站。現在,在克隆回購:git - 不能做一個遠程跟蹤分支

$ git branch -a 
* master 
    remotes/origin/1.0 
    remotes/origin/HEAD -> origin/master 
    remotes/origin/master 

(FWIW的「主人」是綠色的,其他的線是紅色除外「 - >產地/主」,這是白色)

這一切看起來據我所知,這是合理的。但是,如果我嘗試任何下面的命令:

git checkout 1.0 
git checkout origin/1.0 
git checkout remotes/origin/1.0 

我得到的「分離的頭」的消息,所以我認爲這是錯誤的做法。我讀過的所有東西都告訴我這應該創建一個跟蹤分支。 (很明顯,我在鍵入「混帳取」,直到我的臉是青爲好)

如果我嘗試

git checkout -b 1.0 origin/1.0 

與否我用--track,似乎以創建跟蹤分支(與git branch -vv驗證),但是當我試圖把那個跟蹤分支我得到的錯誤error: src refspec 1.0 matches more than one.

我明白什麼該消息意味着,它可能在一些奇怪的情況下,同一個名字的不同分支的工作,但我猜想在我的情況下(我重複的是設置最簡單的「香草」情景)是不是正確的方式去做事情。

+0

你用什麼命令來推送? – Nogoseke

+0

[git:switch branch without detaching head]可能重複(http://stackoverflow.com/questions/471300/git-switch-branch-without-detaching-head) –

+0

@LuísFelipeNogoseke我試過'git push', 'git push 1.0',甚至'git push origin/1.0'但都給出了完全相同的結果 – Andy

回答

2

從錯誤消息:

error: src refspec 1.0 matches more than one. 

我們可以假設,你可能有,不知何故,創建了多個分支具有相同的名稱,或具有相同名稱的標籤。

檢查git branch -a只有一個分支名爲「1.0」。並使用git tag只是爲了確保您也沒有具有相同名稱的標籤。

如果您可以選擇「開始清理」再次克隆存儲庫,那麼使用git checkout -b 1.0 origin/1.0是創建名爲「1.0」的本地分支的正確方法,該分支跟蹤具有相同名稱的遠程分支。然後git push origin 1.0就是你想用來推動你的改變。

+1

賓果! - 我也有一個名爲1.0的標籤。我再次設置了測試,確保標籤名稱和分支名稱不重疊,現在一切正常。謝謝 – Andy