如何将标签推送到gerrit中的特定分支

Fra*_*ank 15 git gerrit

我有一个叫v2.0格里特的分支.现在我想把这个分支的当前统计数据作为v2.0.1.

在我的本地存储库中,我检查了分支,然后使用添加了标记

git tag v2.0.1
Run Code Online (Sandbox Code Playgroud)

现在我正试图将其推向格里特,但我不确定如何.我试过这个:

$ git push origin v2.0.1 HEAD:refs/heads/v2.0
! [remote rejected] v2.0.1 -> v2.0 (prohibited by Gerrit)
Run Code Online (Sandbox Code Playgroud)

我怎样才能将标签推到格里特?

Fra*_*ank 19

经过一些谷歌搜索,我找到了答案:

gerrit仅接受带注释的标签.创建和推送带注释的标签非常简单:

git checkout v2.0
git tag -am "Adding v2.0.1 tag" v2.0.1
git push origin v2.0.1 HEAD:refs/heads/v2.0
Run Code Online (Sandbox Code Playgroud)

  • 上面的命令对我有用,我只是希望有人可以解释这个推动.为什么标签被推送到refs/heads/branchname而不是refs/tags? (4认同)
  • HEAD:refs/heads/v2.0不需要.这是一个额外的refspec,它将本地存储库中的HEAD推送到gerrit上的refs/heads/v2.0."v2.0.1"是将标签推送到gerrit的,它等同于refs/tags/v2.0.1:refs/tags/v2.0.1 (2认同)

lij*_*nma 9

  1. 添加权限:

单击您的项目Access,添加权限如下:

Reference:  
refs/tags/*

Push Annotated Tag 
Push Signed Tag 
Run Code Online (Sandbox Code Playgroud)
  1. 添加标签

带注释的标签: git tag -a "message" tag_name

签名标签: git tag -s tag_name

  1. 推你的标签

简单的cmd: git push --tags

如果要使用cmd从服务器存储库中获取标记:

git fetch --tags

您可以查看文档:

https://review.typo3.org/Documentation/access-control.html#category_push_annotated https://review.typo3.org/Documentation/access-control.html#category_push_signed


Cha*_*esB 5

标签和分支在 Git 中是完全独立的概念,所以你的命令没有意义。标签仅链接到提交,并且是存储库范围的。

标签和分支都是引用,将标签视为对提交的固定引用,将分支视为提交分支尖端的移动引用。

如果标记的提交v2.0.1已经在v2.0分支中,我会说你只需要将两者都推送到origin. 如果没有,您需要将包含标签的v2.0分支合并到分支中,并同时推送两者。