我在存储库中有一堆没有注释的标记,我想弄清楚它们指向哪个提交。是否有一个命令只列出标签和它们的提交sha ?检查标签和查看头部似乎有点太费力对我来说。
更新
在检查完响应后,我意识到我实际上想要的只是查看标记之前的历史记录,对于这一点git log <tagname>就足够了。
标记为answer的答案对于获取标记及其提交的列表很有用,这就是我所要求的。通过一点shell hack,我相信可以将这些转换为SHA+Commit消息。
我在存储库中有一堆没有注释的标记,我想弄清楚它们指向哪个提交。是否有一个命令只列出标签和它们的提交sha ?检查标签和查看头部似乎有点太费力对我来说。
更新
在检查完响应后,我意识到我实际上想要的只是查看标记之前的历史记录,对于这一点git log <tagname>就足够了。
标记为answer的答案对于获取标记及其提交的列表很有用,这就是我所要求的。通过一点shell hack,我相信可以将这些转换为SHA+Commit消息。
当前回答
为了获得标签引用的提交的sha/哈希值(不是标签的sha):
Git rev-list -1 <tag>
其他回答
警告:这只适用于Unannotated标签,因此,它是更安全的使用已接受的答案,在一般情况下工作https://stackoverflow.com/a/1862542/1586965
git show-ref --tags
例如,git show-ref——abbrev=7——tags会显示如下内容:
f727215 refs/tags/v2.16.0
56072ac refs/tags/v2.17.0
b670805 refs/tags/v2.17.1
250ed01 refs/tags/v2.17.2
可以使用下面,它会给提交哈希 git show -s——format=%H <tag>^{提交}
如果需要简短的提交哈希,git show -s——format=%h <tag>^{commit}
您还可以获得更容易理解的标签指向何处使用的图片
git log --graph |git name-rev --stdin --tags |less
然后通过/滚动到您正在寻找的标记。
更紧凑的视图(——pretty=oneline)加上所有头像(-a)也可以帮助:
git log -a --pretty=oneline --graph |git name-rev --stdin --tags |less
看起来有点可怕,但也可以在~/中别名。Gitconfig(如果需要的话)。
~/.gitconfig
[alias]
ls-tags = !git log -a --pretty=oneline --graph |git name-rev --stdin --tags |less
这里没有显示文件名,但至少您可以了解存储库。
cat .git/refs/tags/*
该目录中的每个文件都包含一个指向提交的提交SHA。
Use
git rev-parse --verify <tag>^{commit}
(即使对于带注释的标记,也会返回提交的SHA-1)。
Git show-ref <tag>如果<tag>没有注释也可以工作。并且总是有git for-each-ref(详见文档)。