什么是git show-ref -d上下文中的dereference

Nic*_*ilt 5 git

这是git show-ref -d的手册页.他们在底部也有一个例子.我仍然无法理解dereference的作用是什么?

Cas*_*bel 10

在git中,"普通"(带注释,非轻量级)标记本身就是一个对象,包含元数据和它标记的对象的SHA1.在git对象模型的git社区书的部分中有一幅漂亮的图片(滚动到底部).

因此,当您在普通标签上使用show-ref时,它通常会为您提供有关标签对象的信息.使用该-d/--dereference选项,它会将标记取消引用到标记引用的对象中,并提供有关它的信息.

通过创建一个轻量级的标签:和轻量化与笔记注释标签,如果你没有意识到这一点git tag <tag name>(即没有任何的元数据提供选项,如-a,-s-u).它根本不是标签对象,只是指向您标记的对象的ref.如果您提供其中一个选项,则将元数据附加到标记,因此git会创建一个标记对象来保存它.