Git 标签是独立的实体吗?

Git 标签是独立的实体吗?,git,version-control,git-tag,Git,Version Control,Git Tag,我想弄清楚标签到底存储在哪里 在线文档告诉我只需git-tag-a-m,但之后我该怎么办?标记是否会在历史记录中创建特定点,如提交?或者在我提交之前,标签是否存储在暂存区域?还是标记将自己添加到最后一次提交?我找不到答案。标记只是指向提交的标签(从这个意义上讲,它类似于分支名称,尽管标记指向固定提交而不是自动推进)。这不是承诺的一部分。在创建了一个标记之后,“在那之后”真的没有什么可做的了。现在,您可以使用该标记引用该特定提交,这样您就可以查看自该标记以来的所有更改: git diff myta

我想弄清楚标签到底存储在哪里


在线文档告诉我只需
git-tag-a-m
,但之后我该怎么办?标记是否会在历史记录中创建特定点,如提交?或者在我提交之前,标签是否存储在暂存区域?还是标记将自己添加到最后一次提交?我找不到答案。

标记只是指向提交的标签(从这个意义上讲,它类似于分支名称,尽管标记指向固定提交而不是自动推进)。这不是承诺的一部分。在创建了一个标记之后,“在那之后”真的没有什么可做的了。现在,您可以使用该标记引用该特定提交,这样您就可以查看自该标记以来的所有更改:

git diff mytag
git checkout -b newbranch mytag
或者,您可以基于该标记创建新分支:

git diff mytag
git checkout -b newbranch mytag

至于您的第一个问题(“标记存储在哪里?”),答案是(a)在
.git/refs/tags
目录中,或者(b)在文件中。

标记就像是在提交上粘贴(非常)的便签,因此您可以很容易地参考后者。另请参见注意,带注释的标记在gits对象数据库(.git/objects)中创建标记对象,另一方面,轻量级标记只创建一个ref.Right。对于带注释的标记,ref的值将指向标记对象,而对于轻量级标记,ref直接指向提交。