无法在Git中推送标签

时间:2013-05-09 15:18:44

标签: git gerrit git-push

我无法在我的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://...'

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

...谢谢

5 个答案:

答案 0 :(得分:19)

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

特别是出现此错误:

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

  2. 如果您在refs/heads/*

  3. 上没有推送权限的情况下绕过代码审核
  4. 如果您在refs/tags/*

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

  7. 上推送没有推送签名代码访问权限的签名代码
  8. 如果您推送没有访问权限的轻量级代码,请参阅参考名称refs/tags/*

  9. 如果您将标记与其他人一起作为标记符,并且您没有Forge Committer访问权限的参考名称refs/tags/*

  10. 如果您推送到状态为只读的项目

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

    prohibited by Gerrit

    复制

    更多说明:我对gerrit 2.7的新安装有同样的问题,搜索并发现了这个stackoverflow问题,但我的情况是这个描述的第5号(轻量级标签),所以我为refs / tags /添加了Create Reference权限*,问题解决了。

答案 1 :(得分:3)

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

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

有关详细信息,请参阅Gerrit access controls

答案 2 :(得分:2)

这一行给你一个提示:

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

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

答案 3 :(得分:1)

创建注释并检查gerrit。 您必须在允许创建带注释的

的正确组中

如果你创建了简单的标签,gerrit可能会拒绝那些refs,但它可能会再次依赖于gerrit配置。

创建带注释的标签:

git tag -a  -m "Some message" 

推送所有标签:

git push --tags

检查标签是在远程创建的:

git ls-remote --tags

答案 4 :(得分:0)

Gerrit禁止 <#>; &#34; - 意味着必须允许权利。

首先选择您的项目,然后转到&#34;访问&#34;。然后&#34;编辑&#34;并从下拉菜单中添加权限&#34; 。比必须用箭头在图片上添加三个权限。

enter image description here

你可以在终端使用:

git push origin --tags

<强> !!!重要提示请注意,权利适用于 refs / tags / *