小编典典

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

all

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

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

git push production +1.0.0:master

我想强制 push ,因为我关心的是标签内的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推送到master远程 Git 存储库的分支中。


阅读 58

收藏
2022-06-18

共1个答案

小编典典

它可能会失败,因为它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)

中的Specifying Revisions中进行了描述。

2022-06-18