git:列出悬空标签

Ant*_*n K 6 git git-log git-tag git-branch

语境:

  • 假设你有一些相当棘手的 CI/CD 工作流程,它依赖于 git 标签
  • 构建功能分支并生成一些短期标签以表示产生可部署工件的提交
  • 当功能分支被压缩合并时,通常它会被删除,但不出所料,标签仍然存在
  • 比如说,经过几个月的开发,标签列表可以预见地变得毛茸茸的

因此,问题:

我将如何使用 git 命令行和可选的基本 bash 工具

  1. 列出所有给定标签可达的分支(双重标签是git tag -l --merged ${BRANCH_COMMITTISH},但我不需要给定分支的标签,而是给定标签的分支)
  2. 列出上面第 1 点输出为空的所有标签(显然这可以用 for 循环(给定 1 的任何终止实现),但也许有一些简洁的神奇 git one-liner)?

jth*_*ill 5

git log --simplify-by-decoration --tags --not --branches --remotes --pretty=%d
Run Code Online (Sandbox Code Playgroud)

--simplify-by-decoration说只显示揭示祖先所需的最低限度(通常你使用它--graph)。 --tags --not --branches --remotes说,好吧,它说的是:列出不在分支或远程历史记录中的标签历史记录,即从任何分支或远程跟踪分支无法访问的标签。 --pretty=%d说只显示裁判。