检查推送的标签是否在git远程上


69

从本地推送标签后,有人知道如何检查标签是否在git远程上吗?

看来唯一的方法就是获取遥控器。

Answers:


103

尝试

git ls-remote --tags origin

9
谢谢,它运行良好。但是我还有另一个问题。我得到了以下结果:refs / tags / 0.1,refs / tags / 0.1 ^ {}。你知道第二个是什么吗?
lcb 2011年

听起来完全像一个单独的问题。
RyPeck

1
@lcb不会回答您的问题,但是如果您可以在标签后添加标签名称,并且只会列出完全匹配的标签。
马克·埃文斯

1
@lcb回答“为什么重复的标记,”在这里解决:stackoverflow.com/questions/5346060/...
bryanbraun

14
如果在找不到标签时想要非零状态--exit-codels-remote则传递到,例如git ls-remote --exit-code --tags origin v1.2.3
Paul Annesley 2014年

29

为了更准确地回答这个问题,请检查特定标签是否在给定的远程使用中:

git ls-remote <remote-name> refs/tags/<tag-name>

2
如何验证它与本地标签相同(即,它指向同一提交)?
宾基

5
如果要在脚本中执行此检查(例如在CI流程中),则可以传递该--exit-code选项: git ls-remote --exit-code <remote-name> refs/tags/<tag-name> 如果标签位于远程,它将返回退出代码0,如果Git能够,则返回退出代码2。连接到远程但标签不存在,如果无法连接到远程,则退出代码可能为1。然后,您可以检查退出代码并根据结果执行逻辑。
乔·阿拉莫

4

对于像我这样的懒人,我曾经这样搜索它:

远程标签上

git ls-remote --tags origin | grep TAG_NAME

本地标签上

git tag -l  | grep TAG_NAME

-3

另一种方法,(从“ git:检查是否在远程仓库中提交xyz? ”)

git branch -r --contains my_tag

# ==== or with a sha1: =====
git branch -r --contains 2e29022d

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

输出将如下所示:

origin/my_branch_1
origin/my_other_branch
origin/master

2
这表明标签引用的提交在远程上。它不会测试实际的标签是否被推送到远程。
马克·埃文斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.