繁体   English   中英

在远程git存储库中查找与给定标签相同提交的所有标签

[英]Find all tags at same commit as a given tag in a remote git repository

我试图在远程 git存储库中查找与给定标签具有相同提交的所有标签。 如果有可能,我不想克隆远程的本地副本。

例如,我有一个存储库,其中两个标记release/latestrelease/1.00都指向同一提交。 因此,给定标签release/latest我希望我的脚本返回release/1.00

我正在使用ls-remote列出远程标签:

git ls-remote --tags gitolite@myserver.example.org:/base.git

该命令返回

ad759      refs/tags/release/1.00
0e9d0      refs/tags/release/1.00^{}
de388      refs/tags/release/latest
0e9d0      refs/tags/release/latest^{}

(我缩短了提交哈希以节省空间。)

我不知道如何解释:为什么每个标签有两行? 哪些参考文献指向“真实”标签? 我应该忽略不带^{}的标记吗?

^{}结尾的标签是git commit的实际( 轻量级 )标签; 而没有此后缀的是(PGP-)签名或其他注释的。

在远程存储库上,您必须解析ls-remote的输出,如下所示:

tags=$(git ls-remote --tags gitolite@myserver.example.org:/base.git)
REV=$(echo "$tags" | sed -n 's#\s*refs/tags/release/latest$##p')
echo "$tags" | sed -n "s#$REV\s*refs/tags/##p"

在本地(1.7.0)存储库中,您可以简单地使用

git tag --points-at release/latest

在1.7.0之前的版本中,在远程解决方案中用git show-ref --tags -d替换ls-remote。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM