如何在 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”,这是最后一个提交。我们还可以看到标签者姓名和标签消息详细信息。

更新于:2021 年 2 月 20 日

4K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告