【问题标题】:Cannot push tags in Git无法在 Git 中推送标签
【发布时间】:2023-03-29 02:36:01
【问题描述】:

我无法在我的 git 远程存储库中推送带注释的标签。 gerrit 中提供了所有访问权限。例如。 [参考/*]

我正在使用以下命令创建标签

git tag -a v1.0 -m 'Base Version' 712d77e

当我尝试使用以下命令推送时

git push origin v1.0 

git push origin --tags

我收到以下错误。

Counting objects: 1, done.
Writing objects: 100% (1/1), 157 bytes, done.
Total 1 (delta 0), reused 0 (delta 0)
remote: Processing changes: refs: 1, done
To ssh://...
! [remote rejected] v1.0 -> v1.0 (prohibited by Gerrit)
error: failed to push some refs to 'ssh://...'

请告诉我应该如何在存储库中推送标签。

谢谢....

【问题讨论】:

  • 为什么不先从终端尝试呢?如果它有效,那么您可以将问题缩小到 gerrit

标签: git gerrit git-push


【解决方案1】:

这是一条一般错误消息,如果不允许推送,则 Gerrit 返回,例如因为推送用户没有足够的权限。

尤其会出现这个错误:

  1. 如果您将提交进行代码审查推送到您没有上传权限的分支(访问权限推送refs/for/refs/heads/*

  2. 如果您在 refs/heads/* 没有推送访问权限的情况下绕过代码审查

  3. 如果您在refs/tags/* 上推送没有“推送注释标签”访问权限的注释标签

  4. 如果您在refs/tags/* 上推送没有推送签名标签访问权限的签名标签

  5. 如果你推送一个没有访问权限的轻量级标签为引用名称refs/tags/*创建引用

  6. 如果您以其他人作为标记者推送标记,并且您没有参考名称 refs/tags/* 的 Forge Committer 访问权限

  7. 如果您推送到处于只读状态的项目

对于新用户来说,他们经常会意外地试图绕过代码审查。然后推送失败,出现 Gerrit 禁止的错误消息,因为项目不允许绕过代码审查。通过直接推送到refs/heads/*(例如refs/heads/master)而不是推送到refs/for/*(例如refs/for/master)来绕过代码审查。

复制自prohibited by Gerrit

更多描述:我在新安装 gerrit 2.7 时遇到了同样的问题,搜索并找到了这个 stackoverflow 问题,但我的案例是这个描述的第 5 号(轻量级标签),所以我为 refs/tags/ 添加了创建引用权限*,问题解决了。

【讨论】:

  • 我在 Gerrit 中找不到任何名为“Push Annotated Tag”的权限。您的意思是“创建带注释的标签”吗? (我意识到答案是旧的,也许权限的名称已经改变?)
【解决方案2】:

您需要为 [refs/tags/*] 添加以下项目的权限:

  • 创建参考:创建新标签。
  • 伪造提交者身份:允许不同的标签上传者(您)与原始标签者。
  • 伪造作者身份:允许处理属于其他用户的提交。

详情请参考Gerrit access controls

【讨论】:

    【解决方案3】:

    这一行给你一个提示:

    ! [remote rejected] v1.0 -> v1.0 (prohibited by Gerrit)
    

    Gerrit 禁止推送,因为您的用户不在具有"Push Annotated Tag" 权限的组中。

    【讨论】:

    • 添加伪造作者身份和伪造提交者身份帮助我们推送带注释的标签
    【解决方案4】:

    创建注释和检查gerrit。 您必须在允许创建注释的正确组中

    如果您创建简单的标签,gerrit 可能会拒绝该引用,但同样可能取决于 gerrit 配置。

    创建注释标签:

    git tag -a -m "一些信息"

    推送所有标签:

    git push --标签

    检查标签在远程创建:

    git ls-remote --tags

    【讨论】:

      【解决方案5】:

      Gerrit 禁止” - 表示必须允许权限。

      首先选择您的项目并转到“访问”。然后“编辑”并从下拉菜单中“添加权限”。比必须在带有箭头的图片上添加三个权限。



      你可以在终端中使用:

      git push origin --tags
      

      !!!重要请注意,refs/tags/*

      的权利

      【讨论】:

        猜你喜欢
        • 2021-07-22
        • 1970-01-01
        • 2015-09-05
        • 1970-01-01
        • 1970-01-01
        • 2022-06-16
        • 1970-01-01
        • 2019-08-19
        • 2011-02-28
        相关资源
        最近更新 更多