检查 git 标签是否是父项或子项

Check if git tag is some parent or child

有没有办法确定标签是子标签还是父标签(不是直接子标签或父标签)?

想象以下 git 历史:

a467066 - (tag: child-2, master) feature 4
2028351 - (tag: child-1) feature 3
a7a6364 - (HEAD) feature 2
3772445 - (tag: parent-1) feature 1
5a01bfa - (tag: parent-2) initial commit

我的 HEAD 在中间变更集 ("feature 2") 中,我想知道标签是否是当前变更集的任何子标签。因此,对于 child-1child-2,我想要 true,检查标签 parent-1parent-2 或任何 not-existing 将 return false.

  1. git tag --contains HEAD

    它列出了 HEAD

  2. 的所有后代标签
  3. git merge-base <tag> <HEAD>

    如果它 returns 是 HEAD 的提交,那么 tagHEAD 的后代。

  4. git merge-base --is-ancestor <tag> <HEAD>

    如果 tagHEAD 的祖先,则命令的退出状态为 0。