它与Making git show to show information in a machine parseable format有关,但我厌倦了现在我必须进行大量解析才能获得提交哈希的事实。
有人可以给我一个命令,打印给定git标签的提交哈希(以及只提交哈希)标签吗?我希望
git show mylabel --pretty=format:"%H" --quiet
只是打印我的承诺#但它说
tag mylabel
Tagger: user <user@x.com>
Some comment
446a52cb4aff90d0626b8232aba8c40235c16245
我期待只有提交行的一行输出,但我现在必须解析最后一行?
答案 0 :(得分:14)
git log -1 --format=format:"%H" mylabel
编辑:
实际上更好的解决方案是:
git show-ref -s mylabel
EDIT bis:正如评论中所提到的,注意提交注释的提交(它们是自己的对象)。要获得更通用的解决方案,请阅读@michas answer。
执行git show-ref -d mylabel
时,您可以看到区别。
<强>资源:强>
答案 1 :(得分:10)
git help rev-parse
说:
<rev>^{}, e.g. v0.99.8^{}
A suffix ^ followed by an empty brace pair means the object could be a tag, and dereference the tag recursively until a non-tag object is found.
通常,您使用tag^{}
来引用该提交。
您有两种不同的标签:
使用git rev-parse tag
获取标签本身的SHA1。
使用git rev-parse tag^{}
获取底层提交的SHA1。
对于轻量级标签,两者都是相同的。对于带注释的标签,它们不是。
您还可以使用git show-ref -d tag
,它将显示标记的SHA1和关联提交的SHA1。
还有git show tag
为您提供有关(带注释的)标记的详细信息。
答案 2 :(得分:4)
git rev-parse mylabel^{}
应该做你想做的事。有关^{}
和其他运营商的详细信息,请参阅man gitrevisions
。
答案 3 :(得分:0)
答案 4 :(得分:0)
git log <tag or branch> -1 --pretty=%H
-1
:告诉它只打印1次提交
--pretty=%H
:告诉它只打印完整哈希