例如,我想强制将标记1.0.0推到远程主分支。
我现在正在做以下事情:
git push production +1.0.0:master
我希望强制推送,因为我只关心1.0.0标记内的代码是否被推送到远程存储库上的主分支。
我做错了什么?
Update # 1
当我SSH到我的服务器,我的Git存储库,并执行Git分支-l,我也没有看到主分支列出。
更新# 2
在远程git存储库中运行git标记-l后,我看到master被列出,这意味着当我运行以下命令时:
git push production 1.0.0:master
它实际上推送了标记,并创建了一个名为master的标记,而不是一个新的分支。
我希望将标记1.0.0的内容推入远程Git存储库的主分支。
它可能会失败,因为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)中描述。
它可能会失败,因为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)中描述。