上下文:
- 假设您有一些相当棘手的 CI/CD 工作流,它依赖于 git 标签
- 构建功能分支并生成一些短期标记以表示产生可部署工件的提交
- 当功能分支被压缩 merge 时,通常它会被删除,但不出所料,标签仍然存在
- 经过几个月的开发,标签列表可以预见地变得多毛
因此,问题:
我将如何使用 git 命令行和可选的基本 bash 工具
- 列出给定标签可达的所有分支(与之对应的是
git tag -l --merged ${BRANCH_COMMITTISH}
,但我不需要给定分支的标签,但需要分支给定标签) - 列出上面第 1 点的所有输出为空的标签(显然这可以用 for 循环(给定 1 的任何终止实现),但也许有一些巧妙的神奇 git 单行代码)?
最佳答案
git log --simplify-by-decoration --tags --not --branches --remotes --pretty=%d
--simplify-by-decoration
说只显示揭示祖先所需的最低限度(通常你将它与 --graph
一起使用)。 --tags --not --branches --remotes
说的是,好吧,它说的是什么:列出不在分支或远程历史中的标签历史,即无法从任何分支或远程跟踪访问的标签分支。 --pretty=%d
表示只显示引用。
关于git-branch - git:列出悬挂标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51614904/