我在存储库中有一堆未注释的标记,我想知道它们指向哪个提交.是否有一个命令只列出标签及其提交SHA?检查标签并查看HEAD对我来说似乎有点过于费力.
我在通过回复之后意识到,我真正想要的只是简单地看一下导致标签的历史,这就git log
足够了.
标记为答案的答案对于获取标签及其提交列表很有用,这就是我的要求.有一点shell hackery我敢肯定可以将它们转换为SHA + Commit消息.
一种方法是做到这一点git rev-list
.以下将输出标记指向的提交:
$ git rev-list -n 1 $TAG
~/.gitconfig
如果您经常使用它,可以将其添加为别名:
[alias] tagcommit = rev-list -n 1
然后调用它:
$ git tagcommit $TAG
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
但是,它也会转储提交差异.要省略这些差异,请使用git log -1
.(感谢@DolphinDream和@demisx!)
在我的存储库中,git show-ref TAG
显示标记的哈希值,而不是它指向的提交的哈希值.
git show-ref --dereference TAG
此外,还显示了指向的提交.
使用
git rev-parse --verify^{commit}
(即使对于带注释的标签,也会返回提交的SHA-1).
git show-ref
如果
没有注释也会有用.总是有git for-each-ref
(详见文档).
来自Igor Zevaka:
由于大约有4个几乎同样可接受但又不同的答案,我将总结所有不同的方法来标记标签.
git rev-list -1 $TAG
(回答).git rev-list
输出导致$TAG
类似git log
但仅显示提交的SHA1的提交.将-1
输出限制为它指向的提交.
git show-ref --tags
(回答)将显示所有标签(本地和从远程获取)及其SHA1.
git show-ref $TAG
(回答)将显示标签及其路径以及SHA1.
git rev-parse $TAG
(回答)将显示未注释标签的SHA1.
git rev-parse --verify $TAG^{commit}
(回答)将显示带注释和未注释标签的SHA1.在Windows上使用git rev-parse --verify %TAG%^^^^{commit}
(四个帽子).
cat .git/refs/tags/*
或cat .git/packed-refs
(答案)取决于标签是本地的还是从遥控器取出的.
这个怎么样:
git log -1 $TAGNAME
要么
git log -1 origin/$TAGNAME
为了获得标记引用的提交的sha/hash(不是标记的sha):
git rev-list -1
我也想知道"正确"的方式,但与此同时,你可以这样做:
git show mytag | head -1
即使这已经很老了,我想我会指出一个很酷的功能,我刚刚找到列出标签的提交:
git log --decorate=full
它将显示在提交时结束/开始的分支以及提交的标记.