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

更新

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

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


当前回答

只需使用git show <tag>

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

其他回答

我也想知道正确的方法,但你总是可以窥探到:

$ cat .git/packed-refs 

or:

$ cat .git/refs/tags/*

这个怎么样:

git log -1 $TAGNAME

OR

git log -1 origin/$TAGNAME

来自Igor Zevaka:

总结

由于大约有4个几乎同样可接受但不同的答案,我将总结所有不同的方法来皮肤标签。

git rev-list -1 $TAG (answer). git rev-list outputs the commits that lead up to the $TAG similar to git log but only showing the SHA1 of the commit. The -1 limits the output to the commit it points at. git show-ref --tags (answer) will show all tags (local and fetched from remote) and their SHA1s. git show-ref $TAG (answer) will show the tag and its path along with the SHA1. git rev-parse $TAG (answer) will show the SHA1 of an unannotated tag. git rev-parse --verify $TAG^{commit} (answer) will show a SHA1 of both annotated and unannotated tags. On Windows use git rev-parse --verify %TAG%^^^^{commit} (four hats). cat .git/refs/tags/* or cat .git/packed-refs (answer) depending on whether or not the tag is local or fetched from remote.

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

git show mytag | head -1    

您还可以获得更容易理解的标签指向何处使用的图片

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