我在存储库中有一堆没有注释的标记,我想弄清楚它们指向哪个提交。是否有一个命令只列出标签和它们的提交sha ?检查标签和查看头部似乎有点太费力对我来说。
更新
在检查完响应后,我意识到我实际上想要的只是查看标记之前的历史记录,对于这一点git log <tagname>就足够了。
标记为answer的答案对于获取标记及其提交的列表很有用,这就是我所要求的。通过一点shell hack,我相信可以将这些转换为SHA+Commit消息。
我在存储库中有一堆没有注释的标记,我想弄清楚它们指向哪个提交。是否有一个命令只列出标签和它们的提交sha ?检查标签和查看头部似乎有点太费力对我来说。
更新
在检查完响应后,我意识到我实际上想要的只是查看标记之前的历史记录,对于这一点git log <tagname>就足够了。
标记为answer的答案对于获取标记及其提交的列表很有用,这就是我所要求的。通过一点shell hack,我相信可以将这些转换为SHA+Commit消息。
当前回答
对于带注释的标记,git show-ref TAG显示标记的哈希值,而不是它所指向的提交的哈希值。
git show-ref——derefence TAG显示,另外,使用添加的^{}指向提交。
其他回答
这里没有显示文件名,但至少您可以了解存储库。
cat .git/refs/tags/*
该目录中的每个文件都包含一个指向提交的提交SHA。
Use
git rev-parse --verify <tag>^{commit}
(即使对于带注释的标记,也会返回提交的SHA-1)。
Git show-ref <tag>如果<tag>没有注释也可以工作。并且总是有git for-each-ref(详见文档)。
我也想知道正确的方法,但你总是可以窥探到:
$ cat .git/packed-refs
or:
$ cat .git/refs/tags/*
出租汽车司机的解决方案
解析.git/ packaged -refs并将其格式化为{tag}\t{sha}
sed -n '/ refs\/tags/ { s@\([^ ]*\) refs/tags/\(.*\)@\2\t\1@; p}' .git/packed-refs
我也想知道“正确”的方法,但同时,你可以这样做:
git show mytag | head -1