2013-02-09 89 views
13

AFAIK,git push --tag將refs/tags下的每個標籤推送到遠程。我想知道是否有辦法在git中只推送一些匹配通配符或正則表達式的標籤?git:僅推送特定標籤

例如,我的回購有標記v1.0,v1.1,v2.0v2.1。我只想推v2.*。我試圖

git push <repo> refs/tags/v2.* 

,並得到錯誤

致命的:的Refspec遙控部分是不是在裁判/標籤/ V2有效的名稱*

當然,我總是可以做

cd .git && ls refs/tags/v2.* | xargs git push <repo> 

但是這並沒有味道。

回答

14
git tag | grep '^v2\.' | xargs --no-run-if-empty git push <repo> 
  • .git可能不是目錄,它可能不存在一樣。子模塊有指向根存儲庫的文件。或者您可以將GIT_DIR設置在其他地方。
  • 當沒有標籤符合您的標準時,您不想進行推送。
+1

如果有一個名爲「v2.0」的本地分支會怎麼樣? 'git push'如何解決不明確的名字? – 2013-02-09 07:24:23

+0

具有相同名稱的標籤和分支是個不錯的主意。 Git並沒有這麼好。使用'v2.0'作爲標籤,並使用'stable-2.x'作爲分支。示例:http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary – 2013-02-09 11:19:12

+2

請參閱['gitrevisions'](http://www.kernel.org/) pub/software/scm/git/docs/gitrevisions.html)(「當模棱兩可時,通過在以下規則中進行第一次匹配來消除歧義」)。 – Joe 2013-02-10 01:54:07