如何使用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
就足够了。