如何使用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 

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

我想基本上推动标签1.0.0内容到远程Git仓库的master分支。

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

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

带注释的标签具有自己独特types的对象,指向带标签的提交对象。 分支不能有用地指向标记对象,只提交对象。 您需要将注释的标签“剥离”回提交对象并推送。

 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)的 Specifying Revisions下描述 。

 git push --tags production 

我创build这样的标签,然后我把它推到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 

推送一个标签: git push <reponame> <tagname>

例如, git push production 1.0.0 。 标签不绑定到分支,他们必须提交。

当您想要在主分支中拥有标签的内容时,请在您的计算机上进行本地化。 我会假设你继续在你的本地主分支开发。 那么只要一个git push origin master就足够了。