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