我输入room_id date_reservartion
101 October, 01 2016
101 October, 03 2016
102 October, 02 2016
102 October, 05 2016
103 October, 01 2016
103 October, 02 2016
103 October, 04 2016
104 October, 04 2016
并列出我当前的标签:
git tag
如何确定哪些是注释的,哪些是轻量级的?
答案 0 :(得分:36)
git for-each-ref
告诉你默认情况下每个ref是什么,它的id和类型。要将其限制为仅标记,请执行git for-each-ref refs/tags
。
答案 1 :(得分:30)
git show-ref -d --tags
命令排序,因为轻量级标记在输出中出现一次,带注释的标记出现两次。此外,只有带注释的标签在输出中包含“^ {}”解除引用运算符。
588e9261795ec6dda4bd0a881cf1a86848e3d975 refs/tags/1.2.3
7fe2caaed1b02bb6dae0305c5c0f2592e7080a7a refs/tags/1.2.4
588e9261795ec6dda4bd0a881cf1a86848e3d975 refs/tags/1.2.4^{}
然后可以使用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 /'
对于我的原始回购(来自我的问题),它输出:
lw 1.2.3
a 1.2.4
(例如,1.2.3为“轻量级”,“1.2.4”为注释)。
答案 2 :(得分:14)
获取代码名称(例如git cat-file -t foo
),然后执行cat-file
。如果它是带注释的标记,cat-file
会告诉您它是"标记"。如果它是一个简单的标记,git show
会告诉您它是"提交"。
更新:正如矛盾在他的评论中所说,models.py
也有效,但它提供的信息不仅仅是它的标签类型。
答案 3 :(得分:10)
请尝试使用git describe
https://git-scm.com/docs/git-describe
默认情况下(不使用--all或--tags)git describe仅显示带注释的标签。