检查 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-1
和 child-2
,我想要 true
,检查标签 parent-1
、parent-2
或任何 not-existing
将 return false
.
git tag --contains HEAD
它列出了 HEAD
的所有后代标签
git merge-base <tag> <HEAD>
如果它 returns 是 HEAD
的提交,那么 tag
是 HEAD
的后代。
git merge-base --is-ancestor <tag> <HEAD>
如果 tag
是 HEAD
的祖先,则命令的退出状态为 0。
有没有办法确定标签是子标签还是父标签(不是直接子标签或父标签)?
想象以下 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-1
和 child-2
,我想要 true
,检查标签 parent-1
、parent-2
或任何 not-existing
将 return false
.
git tag --contains HEAD
它列出了
HEAD
的所有后代标签
git merge-base <tag> <HEAD>
如果它 returns 是
HEAD
的提交,那么tag
是HEAD
的后代。git merge-base --is-ancestor <tag> <HEAD>
如果
tag
是HEAD
的祖先,则命令的退出状态为 0。