如何使用refspec将Git标签推送到分支?

我想强制推送,例如,我的标签1.0.0到我的远程master分支。

我现在正在执行以下操作:

git push production +1.0.0:master

我想强制推送 ,因为我关心的是1.0.0标签内的代码被推送到远程存储库上的master分支。

我究竟做错了什么?

更新#1

当我SSH到我的Git仓库所在的服务器并执行git branch -l ,我没有看到master分支也被列出。

更新#2

在远程Git仓库中运行git tag -l后,我看到列出了master ,这意味着当我运行以下命令时:

git push production 1.0.0:master

它实际上推动了标签并创建了一个名为 master的标签,而不是一个新的分支

我想基本上将标签1.0.0内容推送到远程Git存储库的master分支中。


它可能失败,因为1.0.0是一个带注释的标签。 也许你看到了以下错误信息:

错误:尝试将非提交对象写入分支refs / heads / master

带注释的标签有自己独特的对象类型,指向带标签的提交对象。 分支无法有效地指向标记对象,只提交对象。 您需要将带注释的标签“剥离”回提交对象并推送。

git push production +1.0.0^{commit}:master
git push production +1.0.0~0:master          # shorthand

还有另一种语法也适用于这种情况,但如果标记对象指向除提交之外的其他语义(或指向(指向...的提交对象的标记对象)的提交) 。

git push production +1.0.0^{}:master

这些标签剥离语法在指定修订版的git-rev-parse(1)中描述。


git push --tags production

我创建了这样的标签,然后将其推送到GitHub:

git tag -a v1.1 -m "Version 1.1 is waiting for review"
git push --tags

Counting objects: 1, done.
Writing objects: 100% (1/1), 180 bytes, done.
Total 1 (delta 0), reused 0 (delta 0)
To git@github.com:neoneye/triangle_draw.git
 * [new tag]         v1.1 -> v1.1
链接地址: http://www.djcxy.com/p/27131.html

上一篇: How do you push a Git tag to a branch using a refspec?

下一篇: Create a tag in GitHub repository