如何在 Git 中标记提交?
Git 提交是一个 40 位十六进制的 SHA1 哈希值。很多时候我们需要为其添加书签,因为提交哈希值很难记住。这就是可以使用标签的地方。标签可以用来命名提交。换句话说,标签是可用于识别特定提交的标签。例如,“v1.0、RC1.0”是一些命名提交的方式。
标签可以分为以下几种:
轻量级标签
带注释的标签
轻量级标签
轻量级标签也称为简单标签。这些标签使用名称来引用特定的提交。轻量级标签对存储库是私有的。它们只是指向特定提交的指针。换句话说,它们只存储其引用的提交的哈希值,而不存储任何信息。轻量级标签不会作为 Git 中的单独对象存储。
可以使用 **git tag** 命令创建标签。使用此命令的语法如下:
$ git tag <tag_name> <commit_hash>
以下示例创建一个标签“RC1.0”,并将其与具有哈希值“c81c9ab”的提交关联
$ git tag RC1.0 c81c9ab
让我们通过执行以下命令来验证这一点:
$ git tag // lists all tags $ git log −−oneline // lists all commits, one commit per line
以下输出表明存储库中存在名为“RC1.0”的标签,并且它指向提交“c81c9ab”。
089ddf4 (HEAD −> master) new line c81c9ab (tag: RC1.0) This is a short description 8a3d6ed first commit
当我们创建轻量级标签时,将在“.git/refs/tags 文件夹”内创建与标签同名的文件。可以通过执行以下命令来验证:
$ ls .git/refs/tags
输出将是:
RC1.0 $ cat .git/refs/tags/RC1.0
输出显示创建了一个名为“RC1.0”的标签,并且它指向特定的提交。
c81c9abe7c4c8273a11ab7d20a3aac0be54bf00c
带注释的标签
带注释的标签存储额外的元数据,例如作者姓名、发行说明、标签消息和日期。与轻量级标签不同,带注释的标签作为 Git 中的单独对象存储。这些标签允许您存储与该特定标签相关的信息。带注释的标签有一个标签消息,就像提交有一个提交消息一样。创建带注释的标签的语法如下:
$ git tag −a <tag_name> −m <tag_message>
**-a** 指定正在创建的标签是带注释的标签。**-m** 标志表示标签消息,类似于提交消息。
以下示例创建一个名为 v1.1 的带注释的标签,并向其添加消息。
$ git tag −a v1.1 −m 'my version 1.1'
许多 Git 命令仅适用于带注释的标签,因为它们被视为永久对象。带注释的标签存储为 tag-type 对象,该对象指向一个提交。我们可以通过执行以下命令来验证:
$ ls .git/refs/tags
以下输出显示“.git/refs/tags 文件夹”包含我们的“v1.1”标签文件。
RC1.0 v1.1
当我们使用 **cat** 命令显示内容时,它会显示一个哈希值。
$ cat .git/refs/tags/v1.1 //view content of the tag file
输出是
fa2c7b87859db191440e97ec87e47b212c44945d
让我们使用以下命令验证此哈希值的类型。
$ git cat−file −t fa2c // shows type of the object represented by this hash $ git cat−file −p fa2c // prints the contents of the SHA1 hash
上述命令的输出将是:
// output of git cat−file −t fa2c tag // output of git cat−file −p fa2c object 089ddf457ded2496a5ad5ac4384a93a109b9b7e2 type commit tag v1.1 tagger Kiran <[email protected]>1612112082
输出显示“v1.1”标签文件中包含的“fa2c”对象是一个标签对象。当我们使用 **cat-file -p** 命令显示“fa2c” blob 对象的详细信息时,它指向提交“089dd”,这是最后一个提交。我们还可以看到标签者姓名和标签消息详细信息。