2012-05-15 71 views
6

我想知道在Git中是否有可能檢索標籤列表(很像git tag命令的結果),但列表應僅限於某個分支。Git可以檢索僅存在於某個分支中的標籤列表嗎?

如果這是可能的,任何人都可以解釋這是如何完成的?也許有一些模式匹配魔術?

+0

我可能是錯的,但它需要(很少)腳本 – CharlesB

+0

不知道,但這是你想要的嗎? [分支包含的列表標記](http://stackoverflow.com/q/2381665/11343) – CharlesB

回答

5

我認爲這會做你想要什麼:

git log --pretty='%H' <branch> | 
    xargs -n1 git describe --tags --exact-match 2>/dev/null 

這使用git log得到的一個分支提交列表,然後將它們傳送到git describe,看看他們是否符合標籤。

+1

+1,最好的方法。可以通過在'git log'中添加'--simplify-by-decoration'來實現更快的速度,它只給出匹配refspec的提交,所以你不會循環* all * commitits – CharlesB

+0

嘿,我也在尋找解決方案類似於此: 我剛剛發佈了一個問題[鏈接](http://stackoverflow.com/questions/11316306/listing-the-tags-in-git-from-a-specific-branch),然後發生閱讀你的問題 – iDev

+0

@iDev:你嘗試過解決方案嗎?這是否適合你? –

2

另一種方法是可以通過Karthik Nayak (KarthikNayak)新的git標籤選項--merged(在git的2.7+,2015年第四季度)

git tag --merged <abranchname> 

commit 5242860,...(2015年9月10日)。
(在commit 8a54523Junio C Hamano -- gitster --合併,2015年10月5日)

tag.c:實行 '--merged' 和 '--no-合併' 選項

使用 'ref-filter' 的API將'--merged'和'--no-merged'選項設置爲'tag.c'。

  • '--merged'選項允許用戶只列出合併到指定提交中的標記。
  • --no-merged」選項允許用戶只列出未合併到指定提交中的標籤。

如果沒有提供對象它假定HEAD作爲對象。