我在存储库中有一堆没有注释的标记,我想弄清楚它们指向哪个提交。是否有一个命令只列出标签和它们的提交sha ?检查标签和查看头部似乎有点太费力对我来说。

更新

在检查完响应后,我意识到我实际上想要的只是查看标记之前的历史记录,对于这一点git log <tagname>就足够了。

标记为answer的答案对于获取标记及其提交的列表很有用,这就是我所要求的。通过一点shell hack,我相信可以将这些转换为SHA+Commit消息。


当前回答

这将得到当前的SHA1哈希值

简化提交哈希

git show <tag> --format="%h" --> 42e646e

提交哈希

git show <tag> --format="%H" --> 42e646ea3483e156c58cf68925545fffaf4fb280

其他回答

Use

git rev-parse --verify <tag>^{commit}

(即使对于带注释的标记,也会返回提交的SHA-1)。


Git show-ref <tag>如果<tag>没有注释也可以工作。并且总是有git for-each-ref(详见文档)。

尽管这已经很老了,但我想指出我刚刚发现的一个很酷的功能,用于列出带有提交的标记:

git log --decorate=full

它将显示在提交处结束/开始的分支,以及提交的标记。

我也想知道“正确”的方法,但同时,你可以这样做:

git show mytag | head -1    

这个怎么样:

git log -1 $TAGNAME

OR

git log -1 origin/$TAGNAME

只需使用git show <tag>

但是,它也转储提交差异。要忽略这些差异,使用git log -1 <tag>。(感谢@DolphinDream和@demisx !)