所以git tag
命令列出当前的Git标签Git的标签列表,显示提交SHA1哈希
tag1
tag2
git tag -n
打印标签的消息
tag1 blah blah
tag2 blah blah
什么让TAG1 &的哈希值的最佳方式tag2?
所以git tag
命令列出当前的Git标签Git的标签列表,显示提交SHA1哈希
tag1
tag2
git tag -n
打印标签的消息
tag1 blah blah
tag2 blah blah
什么让TAG1 &的哈希值的最佳方式tag2?
这个怎么样?
git show-ref --tags
标签必须签名和/或消息。轻量级标签没有SHA1对象,只是参考。否则请尝试git show
。
'git show tag1' 'git show tag2'最适合我,谢谢:) – 2012-01-10 12:37:08
要获取任何种类的参考所指的SHA1(分支,标签...)使用git rev-parse
:
git rev-parse tag1^0 tag2^0
它将只打印完整SHA1s,在不同的行。 ^0
后缀是一种特殊的语法,用于确保这将打印由标记指向的提交的SHA1,而不管它是否被注释。 (注释标签本身就是对象,它包含指向提交以及元数据的指针,如果您确实知道标签已注释,并且希望标签的SHA1,则只需要将^0
关闭。)
当然,你不应该经常需要这样做,因为任何接受SHA1的Git命令都应该接受一个标签!
这里最好的答案,谢谢@Jefromi。请注意,在Windows cmd shell中,任何使用^的git命令都需要引用:例如, git rev-parse“tag1^0”“tag2^0”。 – yoyo 2014-05-02 16:44:09
我有一个类似的问题,但想要(几个)特定标签的散列。我发现,“秀-REF”将采取的标签列表,所以这样做的工作:
% git show-ref v3.4.0.13-ga v3.4.0.13-base
bfc7747c4cf67a4aacc71d7a40337d2c3f73a886 refs/tags/v3.4.0.13-base
79ba365e75a4f9cee074d25a605a26acb660b7de refs/tags/v3.4.0.13-ga
然而,一些实验用“混帐秀”产生了这个命令:
% git show --summary --oneline --decorate v3.4.0.13-ga v3.4.0.13-base
79ba365 (tag: v3.4.0.13-ga, rhins013a) commit message the first
bfc7747 (tag: v3.4.0.13-base) commit message the second
由于我比使用“show-ref”更加熟悉“show”,我发现后者更容易记忆,也更有用。
带注释的标签有自己的SHA-1,所以我们需要对它们进行解引用。但是,轻量级标记无法解除引用,因为它们已指向提交。为了 解决,我们必须同时列出和过滤提交对象:
git for-each-ref --sort -v:refname --format '%(objectname) %(objecttype) %(refname)
%(*objectname) %(*objecttype) %(*refname)' refs/tags | grep commit
结果用轻质标签:
589610a0114a375f1bff716dd308cf8df08571d3 commit refs/tags/1.4.9
e25952a74bf379783944bef9c4fcc60600cb764c commit refs/tags/1.4.8
19b1c2c96a9678837f57eac86cf3d22842731510 commit refs/tags/1.4.7
7208212a55c4a56af34da781a7f730d6ddd557a1 commit refs/tags/1.4.6
62ec20337a4125496bd4f56288f3283963153194 commit refs/tags/1.4.5
结果与标注的标签:
e2b2d6a172b76d44cb7b1ddb12ea5bfac9613a44 commit refs/tags/v2.11.0-rc3^{}
1310affe024fba407bff55dbe65cd6d670c8a32d commit refs/tags/v2.11.0-rc2^{}
3ab228137f980ff72dbdf5064a877d07bec76df9 commit refs/tags/v2.11.0-rc1^{}
1fe8f2cf461179c41f64efbd1dc0a9fb3b7a0fb1 commit refs/tags/v2.11.0-rc0^{}
454cb6bd52a4de614a3633e4f547af03d5c3b640 commit refs/tags/v2.11.0^{}
使用'git log --tags --oneline --no-walk'也会自动使用带注释的标签。 :) – ADTC 2017-11-12 21:07:17
的git tag
命令不发达。很多都是需要的,但缺少它,例如提交历史记录顺序中的完整标签详细信息和标签。
我喜欢这个代替,这给了我想要的东西,但不能从git tag
得到:
git log --oneline --decorate --tags --no-walk
这给出了相反的时间顺序标签的一个非常漂亮的彩色编码视图(因为它将在完整的日志中)。这样,您不仅可以看到标签,还可以看到标签提交的缩写哈希和提交消息。
git config --global alias.tags "log --oneline --decorate --tags --no-walk"
git config --global alias.t "!git tags"
注:我不得不使用bash重定向git t
的混帐不支持调用的
我有如下其化名为git t
和git tags
别名来自另一个别名(这是一个无赖)。
如果你想看到的提交日期和时间,尝试:
git log --tags --no-walk --date=iso-local --pretty='%C(auto)%h %cd%d %s'
可以在选择使用其他日期格式,以及完全控制输出以满足您的独特品味在--pretty
选项。这两个选项在git-log Documentation中都有详细记录。
似乎是一个非常有用的答案。谢谢。 – Ceki 2017-03-22 20:57:10
虽然不是OP所要求的(显示提交** sha1哈希**),但它非常有用,因为提交消息也可能非常方便。从我+1。 – 2017-04-14 13:28:28
巧妙,thx! – 2017-07-09 12:36:17
git show-ref [object]
对象可以是提交/标签/树/一滴,
你的情况刚:
git show-ref [tag_name]
git for-each-ref --format='%(if)%(*objectname)%(then)%(*objectname)%(else)%(objectname)%(end) %(refname)' refs/tags
这给所有提交的标签列表。带注释的标签被取消引用。发送感谢here。
注意,这不会区分轻量级和带注释的标签。对于轻量级标签,它将显示提交,并为注释标签显示标签对象本身的散列。 – 2012-01-09 23:43:35
使用'git show-ref --tags -d'来显示具有解除引用的引用的标签列表(在标注了标签的情况下)。解除引用的标签后缀为'^ {}'。 – 2012-11-10 19:30:49