检查 git tag 是某个父级还是子级

Rai*_*ung 3 git git-tag

有没有办法找出标签是孩子还是父母(不是直接孩子或父母)?

想象一下以下 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
Run Code Online (Sandbox Code Playgroud)

HEAD在中间变更集(“功能 2”),我想知道标签是否是当前变更集的任何子项。因此,对于child-1child-2我想true,检查标签parent-1parent-2或任何not-existing会返回false

Elp*_*Kay 5

  1. git tag --contains HEAD

    它列出了所有标签的后代 HEAD

  2. git merge-base <tag> <HEAD>

    如果它返回 的提交HEAD,则tag是 的后代HEAD

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

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