【问题标题】:check if pushed tag is on the git remote检查推送的标签是否在 git 遥控器上
【发布时间】:2011-06-09 14:15:15
【问题描述】:

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

似乎唯一的方法就是获取遥控器。

【问题讨论】:

    标签: git


    【解决方案1】:

    试试

    git ls-remote --tags origin
    

    【讨论】:

    • 谢谢,它运行良好。但我还有另一个问题。我得到了这些结果:refs/tags/0.1、refs/tags/0.1^{}。你知道第二个是什么吗?
    • 听起来完全是一个单独的问题。
    • @lcb 这并不能回答你的问题,但是如果你可以在 origin 之后添加标签名称,它只会列出一个完全匹配的标签。
    • @lcb “为什么重复标签”的答案在这里解决:stackoverflow.com/questions/5346060/…
    • 如果在未找到标签时想要非零状态,则将 --exit-code 传递给 ls-remote,例如git ls-remote --exit-code --tags origin v1.2.3.
    【解决方案2】:

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

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

    【讨论】:

    • 如何验证它与本地标签是否相同(即它指向同一个提交)?
    • 如果您想在脚本中执行此检查,例如在 CI 过程中,您可以传递 --exit-code 选项:git ls-remote --exit-code &lt;remote-name&gt; refs/tags/&lt;tag-name&gt; 如果标记为,它将返回退出代码 0在遥控器中,如果 Git 能够连接到遥控器但标签不存在,则退出代码为 2,如果无法连接到遥控器,则可能退出代码为 1。然后您可以检查退出代码并根据结果执行您的逻辑。
    【解决方案3】:

    对于像我这样的懒人,我以前是这样搜索的:

    关于远程标签

    git ls-remote --tags origin | grep TAG_NAME
    

    关于本地标签

    git tag -l  | grep TAG_NAME
    

    【讨论】:

      【解决方案4】:

      另一种方式,(来自“git: check if commit xyz in remote repo?”)

      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
      

      【讨论】:

      • 这表明标签引用的提交在远程。它不测试实际标签是否被推送到远程。
      猜你喜欢
      • 2016-12-27
      • 2017-12-20
      • 2016-06-14
      • 1970-01-01
      • 1970-01-01
      • 2014-08-11
      • 2012-08-01
      • 2014-02-27
      • 1970-01-01
      相关资源
      最近更新 更多