【问题标题】:Is it possible with Git to retrieve a list of tags that exist only in a certain branch?Git是否可以检索仅存在于某个分支中的标签列表?
【发布时间】:2012-05-23 02:03:06
【问题描述】:

我想知道是否可以在 Git 中检索标签列表(很像 git tag 命令的结果),但该列表应仅限于某个分支。

如果可以的话,谁能解释一下这是怎么做到的?也许有一些模式匹配的魔法?

【问题讨论】:

标签: git tags branch


【解决方案1】:

我认为这会满足您的需求:

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

这使用git log 获取分支中的提交列表,然后将它们传递给git describe 以查看它们是否对应于标签。

【讨论】:

  • +1,最好的方法。可以通过将--simplify-by-decoration 添加到git log 来变得更快,它只提供与 refspec 匹配的提交,因此您不会循环 all 提交
  • 嘿,我也在寻找类似的解决方案:我刚刚在link 上发布了一个问题,然后碰巧阅读了您的问题
  • @iDev:你试过 larsks 的解决方案了吗?这对你有用吗?
【解决方案2】:

使用新的 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 为对象。

【讨论】:

  • 这没关系,但它不按创建顺序显示标签,这可能是多个分支被标记和合并时的问题。
  • @ingyhere 然后你需要添加一个排序选项:stackoverflow.com/a/34919313/6309:git tag --sort=-creatordate
猜你喜欢
  • 1970-01-01
  • 2019-06-26
  • 2013-08-07
  • 2020-06-10
  • 2020-01-20
  • 2013-01-14
  • 2011-08-07
  • 2013-02-23
  • 2022-07-19
相关资源
最近更新 更多