推送 git 标签也会推送提交吗?

时间:2021-06-05 00:36:24

标签: git github

这就是我所做的...

git checkout -b test-branch
### add a line of text to a .md file, then...
git commit -am 'a commit that will never be pushed'
git tag my-tag
git push --tags
### NOTE: I ONLY pushed the tag (not the branch)

所以...

没有推送提交

没有推送提交所在的分支

但是……

当我查看 tag in github

然后点击关联的SHA enter image description here 我看到the actual (un-pushed) commit

enter image description here

我认为标签只是一个指向 SHA 的指针。

我如何看到未推送提交的内容?这是怎么回事?

2 个答案:

答案 0 :(得分:4)

<块引用>

我没有推送提交

是的,无论您是否知道,否则遥控器会拒绝标签。

您永远不会手动“推送提交”,而是在推送引用提交的分支或标签时隐式推送它们。标签和分支或多或少是相同的。提交不再是“在分支上”,而是“在标签上”。分支和标签是提交的指针,当你推送其中一种类型时,它引用的提交也必须被推送。

与您在检出分支时不必要求 Git 专门下载所有提交的方式相同。 Git 为你做这件事。

<块引用>

我认为标签只是一个指向 SHA 的指针(不是提交的容器...)

是的,完全与分支相同。它们都只是指向提交 ID 的指针。

答案 1 :(得分:2)

提交中的 Git 流量。提交是一回事。其他一切都只是关于这些提交的信息。

标签引用提交。说签出一个标签签出一个提交。说推送标签会推送提交。

如果没有推送标签指向的提交(以及远程可能缺少的所有可从它访问的内容),您就无法推送标签。指向不存在提交的标签将是一个损坏的仓库!

(当然,通常当我们推送标签时,远程已经引用了提交,因此不会发生实际的提交传输。但是在制定这种边缘情况时,您安排了一些事情,以便远程没有 已经有这个提交。)

它与分支相同。分支指的是一次提交。检出分支检出提交。推送分支会推送提交。推送分支不只是传输名称,它传输提交。

相关问题