检查推送标记是否位于git remote上

检查推送标记是否位于git remote上,git,Git,有人知道如何在从本地推送标记后检查标记是否在git remote上吗 看来唯一的办法就是拿到遥控器 试试看 git ls-remote --tags origin 另一种方式,(从“”) 这将列出包含标记或提交的远程分支 输出将如下所示: origin/my_branch_1 origin/my_other_branch origin/master 要更准确地回答此问题,请检查特定标记是否位于给定的遥控器中,请使用: git ls-remote <remote-name> ref

有人知道如何在从本地推送标记后检查标记是否在git remote上吗

看来唯一的办法就是拿到遥控器

试试看

git ls-remote --tags origin
另一种方式,(从“”)

这将列出包含标记或提交的远程分支

输出将如下所示:

origin/my_branch_1
origin/my_other_branch
origin/master

要更准确地回答此问题,请检查特定标记是否位于给定的遥控器中,请使用:

git ls-remote <remote-name> refs/tags/<tag-name>
git ls远程引用/标记/

对于像我这样懒惰的人,我过去常常这样搜索:

在远程标记上

git ls-remote --tags origin | grep TAG_NAME
本地标记上

git tag -l  | grep TAG_NAME

谢谢,它工作得很好。但我还有一个问题。我得到了以下结果:refs/tags/0.1,refs/tags/0.1^{}。你知道第二个是什么吗?听起来像是一个完全独立的问题。@lcb这并不能回答你的问题,但如果你能在原点后添加标记名,它只会列出一个完全匹配的标记。@lcb“为什么重复标记”的答案此处的地址是:如果您希望在未找到标记时处于非零状态,请将
--exit code
传递到
ls remote
,例如
git ls remote--exit code--tags origin v1.2.3
。这表明提交标记引用在远程上。它不测试实际标记是否被推送到远程。如何验证它是否与本地标记相同(即,它指向相同的提交)?如果要在脚本中执行此检查,例如在CI过程中,您可以传递
--exit code
选项:
git ls remote--exit code refs/tags/
如果标记位于远程,它将返回0的退出代码;如果git能够连接到远程,但标记不存在,它将返回2的退出代码;如果无法连接到远程,则可能返回1的退出代码。然后,您可以检查退出代码并根据结果执行逻辑。
git tag -l  | grep TAG_NAME