我输入git tag
并列出我当前的标签:
1.2.3
1.2.4
Run Code Online (Sandbox Code Playgroud)
如何确定哪些是注释的,哪些是轻量级的?
jth*_*ill 42
git for-each-ref
告诉你默认情况下每个ref是什么,它的id和类型.要将其限制为仅标记,请执行git for-each-ref refs/tags
.
G. *_*ies 35
该git show-ref -d --tags
命令排序的这样做,因为轻量级标签输出发生一次,两次出现注释标记.此外,只有带注释的标签在输出中包含"^ {}"解除引用运算符.
588e9261795ec6dda4bd0a881cf1a86848e3d975 refs/tags/1.2.3
7fe2caaed1b02bb6dae0305c5c0f2592e7080a7a refs/tags/1.2.4
588e9261795ec6dda4bd0a881cf1a86848e3d975 refs/tags/1.2.4^{}
Run Code Online (Sandbox Code Playgroud)
并且可以使用unix sort,sed,cut和uniq命令对输出进行按摩,以使输出更具可读性:
git show-ref -d --tags |
cut -b 42- | # to remove the commit-id
sort |
sed 's/\^{}//' | # remove ^{} markings
uniq -c | # count identical lines
sed 's/2\ refs\/tags\// a /' | # 2 identicals = annotated
sed 's/1\ refs\/tags\//lw /'
Run Code Online (Sandbox Code Playgroud)
对于我原来的回购(来自我的问题),它输出:
lw 1.2.3
a 1.2.4
Run Code Online (Sandbox Code Playgroud)
(例如,1.2.3是"轻量级","1.2.4"是注释的).
Nou*_*him 18
获取标签名称(比如说foo
),然后执行git cat-file -t foo
.如果它是一个带注释的标签,cat-file
会告诉你它是一个"标签".如果它是一个简单的标签,cat-file
会告诉你它是一个"提交".
更新:正如oxymoron在他的评论中所说,git show
它也有效,但它提供的信息不仅仅是它是什么样的标签.
Oxy*_*ron 12
请尝试使用 git describe
https://git-scm.com/docs/git-describe
默认情况下(不带--all或--tags)git describe只显示带注释的标签.