【发布时间】:2012-05-23 02:03:06
【问题描述】:
我想知道是否可以在 Git 中检索标签列表(很像 git tag 命令的结果),但该列表应仅限于某个分支。
如果可以的话,谁能解释一下这是怎么做到的?也许有一些模式匹配的魔法?
【问题讨论】:
-
我可能错了,但它需要(很少)脚本
-
不确定,但这是您想要的吗? list tags contained by a branch
我想知道是否可以在 Git 中检索标签列表(很像 git tag 命令的结果),但该列表应仅限于某个分支。
如果可以的话,谁能解释一下这是怎么做到的?也许有一些模式匹配的魔法?
【问题讨论】:
我认为这会满足您的需求:
git log --pretty='%H' <branch> |
xargs -n1 git describe --tags --exact-match 2>/dev/null
这使用git log 获取分支中的提交列表,然后将它们传递给git describe 以查看它们是否对应于标签。
【讨论】:
--simplify-by-decoration 添加到git log 来变得更快,它只提供与 refspec 匹配的提交,因此您不会循环 all 提交
使用新的 git 标签选项 --merged(在 git 2.7+,2015 年第四季度)可以使用另一种方法
git tag --merged <abranchname>
参见commit 5242860,...(2015 年 9 月 10 日)Karthik Nayak (KarthikNayak)。
(由 Junio C Hamano -- gitster -- 合并到 commit 8a54523,2015 年 10 月 5 日)
tag.c:实现“--merged”和“--no-merged”选项
使用“
ref-filter”API 将“--merged”和“--no-merged”选项实现到“tag.c”中。
- “
--merged”选项允许用户仅列出合并到命名提交中的标签。- “
--no-merged”选项允许用户仅列出未合并到命名提交的标签。如果没有提供对象,则假定
HEAD为对象。
【讨论】:
git tag --sort=-creatordate