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

更新

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

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


当前回答

对于带注释的标记,git show-ref TAG显示标记的哈希值,而不是它所指向的提交的哈希值。

git show-ref——derefence TAG显示,另外,使用添加的^{}指向提交。

其他回答

可以使用下面,它会给提交哈希 git show -s——format=%H <tag>^{提交}

如果需要简短的提交哈希,git show -s——format=%h <tag>^{commit}

Use

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

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


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

如果您想查看标记SOMETAG(标记器,日期等)的详细信息,它所指向的提交的哈希值和一些关于提交的信息,但没有完整的差异,请尝试

git show --name-status SOMETAG

示例输出:

tag SOMETAG
Tagger: ....
Date:   Thu Jan 26 17:40:53 2017 +0100

 .... tag message .......

commit 9f00ce27c924c7e972e96be7392918b826a3fad9
Author: .............
Date:   Thu Jan 26 17:38:35 2017 +0100

 .... commit message .......

..... list of changed files with their change-status (like git log --name-status) .....

为了获得标签引用的提交的sha/哈希值(不是标签的sha):

Git rev-list -1 <tag>

这个怎么样:

git log -1 $TAGNAME

OR

git log -1 origin/$TAGNAME