2012-02-21 94 views
68

我想一個新的本地分支product-0.2推送到偏遠地方已經存在具有相同名稱的標籤(但分支本身不存在)混帳推本地分支具有相同名稱的遠程標籤

git push -v --tags --set-upstream origin product-0.2:product-0.2 
Pushing to https://****@github.com/mycompany/product.git 
error: src refspec product-0.2 matches more than one. 
error: failed to push some refs to 'https://****@github.com/mycompany/product.git' 

與相同:

git push origin product-0.2:/refs/heads/product-0.2 

雖然周圍工作的其他方式,如創建一個分支product-0.1,在其上提交,然後應用標籤product-0.1

有些人通過在本地刪除衝突標籤來解決此問題,然後推送分支,然後檢索遠程標籤,但看起來很麻煩且容易出錯。

如何以最小的煩惱創建我的分支?

感謝您的輸入

+1

嘗試'refs/heads/product-0.2:refs/heads/product-0.2',即不帶前導斜槓,並且在本地提供完整的refspec。 – knittl 2012-02-21 14:22:47

+0

可以試試git push origin產品-0.2:產品-0.2 – vpatil 2012-02-21 14:48:07

回答

103

以下命令應該可以工作。

git push origin refs/heads/product-0.2:refs/heads/product-0.2 
+9

接受答案,這是消除歧義的方法。儘管如此,首先不要讓標籤和分支同名。有些工具(例如SourceTree)會偶然發現,您將被留在自己的設備上,命令行是唯一的解決方案。感謝你們! – youri 2012-03-06 17:14:57

+0

Det var sa lite sa :) – ralphtheninja 2012-03-06 21:06:15

+1

+1。當你需要消除遠程名稱的歧義時,類似的東西可以工作:'refs/remotes/remote_name/remote_branch' – Kelvin 2012-10-17 20:08:07

13

更改名稱。無論是在本地還是遠程執行,只需更改名稱。標籤和分支在git中基本相同:它們表示一個提交的指針。區別在於分支指針在您進行提交時會前進,而標記保持靜態。但是,您可以在分支或標籤上執行git checkout。你爲什麼要與所有這些翻倍的名字戰鬥?改變它們。

+0

應該/可以用'補丁級別'的最後一位數字調用標籤'product-0.2.0',但是仍然有命名約定,並且我們在過去當分支機構沒有遇到麻煩在標籤之前創建。 – youri 2012-02-22 08:25:17

+0

如果團隊已經開始使用這個分支,那麼重命名它會不會有幫助? – svassr 2013-12-10 19:51:27

+0

更改尚未推送的實體的名稱。 – TheBuzzSaw 2013-12-10 23:00:29

1

這種失敗:

git push $origin $branch:$branch 

雖然這個工作對我來說:

git checkout $branch 
git push $origin HEAD:$branch 
16

驗證什麼標籤與分支相關聯:

git tag 

對我來說,我有一個與分支名稱相同的標記。刪除它的工作:

git tag -d [tag-name] 
3

我試圖今早推到一個規範的存儲庫,並得到了以下錯誤:

$ git push origin master 
error: src refspec master matches more than one. 
error: failed to push some refs to 'ssh://[email protected]/srv/git/repo' 

這事,因爲我不小心在本地創建一個主代碼:

$ git tag 
master 
tag1 
tag2 
tag3 
tag4 

一旦我本地刪除該標籤:

git tag -d master 

我能夠再次推動。

+0

好的解釋。需要刪除本地標籤。謝謝! – 2018-03-08 15:27:43

相關問題