如果我为尚未推送的提交推送标签会发生什么?

6
我正在使用一个部署脚本,当我部署时,它会自动通过 git tag -f . . . 命令向头部添加标签,以指示主机。该脚本还会自动推送标签(通过 git push --tags 命令),因此存储库的其他用户将知道服务器当前正在运行哪个提交。通常,在部署之前,我会手动推送提交,以便标签与远程服务器上的提交匹配,但我很好奇如果我通过 git push --tags 命令为未被推送的提交推送标签会发生什么。

1
出于对中央仓库的担忧,我想:)。通常情况下,会对影响中央仓库的实验持反对态度。 - B Robster
由于Git的分布式特性,很容易在自己的计算机上设置一个测试存储库并推送到其中。您不需要安装任何Git服务器,只需使用文件协议即可。或者在GitHub或类似服务上设置一个测试存储库。 - svick
2个回答

11

推送标签意味着推送标签所需的所有内容,就像推送分支一样。这意味着需要推送它指向的提交,也就是需要推送该提交所对应的树、树中的子树、子树中的blob以及该提交的祖先等。如果不推送相应的对象,推送引用就没有任何意义,因此Git永远不会这样做。


5

所有需要的标签对象将被推送,但其他引用(如HEAD或master)不会更新。所以,虽然您所做的更改和标记将在远程存储库中,但任何对主分支(或您正在使用的任何分支)进行拉取的人都还没有在其分支副本上看到您的提交。


这比被接受的答案更有用。如果您能指出任何文档或其他可靠来源,那就更好了。 - djvg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接