这就是我所做的...
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 我看到the actual (un-pushed) commit
我认为标签只是一个指向 SHA 的指针。
我如何看到未推送提交的内容?这是怎么回事?
答案 0 :(得分:4)
我没有推送提交
是的,无论您是否知道,否则遥控器会拒绝标签。
您永远不会手动“推送提交”,而是在推送引用提交的分支或标签时隐式推送它们。标签和分支或多或少是相同的。提交不再是“在分支上”,而是“在标签上”。分支和标签是提交的指针,当你推送其中一种类型时,它引用的提交也必须被推送。
与您在检出分支时不必要求 Git 专门下载所有提交的方式相同。 Git 为你做这件事。
<块引用>我认为标签只是一个指向 SHA 的指针(不是提交的容器...)
是的,完全与分支相同。它们都只是指向提交 ID 的指针。
答案 1 :(得分:2)
提交中的 Git 流量。提交是一回事。其他一切都只是关于这些提交的信息。
标签引用提交。说签出一个标签签出一个提交。说推送标签会推送提交。
如果没有推送标签指向的提交(以及远程可能缺少的所有可从它访问的内容),您就无法推送标签。指向不存在提交的标签将是一个损坏的仓库!
(当然,通常当我们推送标签时,远程已经引用了提交,因此不会发生实际的提交传输。但是在制定这种边缘情况时,您安排了一些事情,以便远程没有 已经有这个提交。)
它与分支相同。分支指的是一次提交。检出分支检出提交。推送分支会推送提交。推送分支不只是传输名称,它传输提交。