如何在git中标记提交?

git commit是一个40位十六进制SHA1哈希。由于提交哈希值很难记住,因此我们经常需要在a上加上书签。在这里可以使用标签。标签可用于命名提交。换句话说,标签是可以用来标识特定提交的标签。例如,“ v1.0,RC1.0”是命名提交的一些方法。

标签可以分类为-

  • 轻量级标签

  • 带注释的标签

轻量级标签

轻量级标签也称为简单标签。这些标签使用名称来引用特定的提交。轻量级标签是存储库专用的。这些只是指向特定提交的指针。换句话说,它们仅存储所引用的提交的哈希,不存储任何信息。轻量级标签不会在Git中存储为单独的对象。

可以使用git tag命令创建标签。使用此命令的语法是-

$ git tag <tag_name> <commit_hash>

以下示例创建一个标签“ RC1.0”,并将其与具有哈希“ c81c9ab”的提交相关联

$ git tag RC1.0 c81c9ab

让我们通过执行以下命令来验证这一点-

$ git tag             // 列出所有标签
$ 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命令仅在带注释的标签上起作用,因为它们被视为永久对象。带注释的标记存储为标记类型的对象,该对象指向提交。我们可以通过执行以下命令来验证这一点-

$ 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 <kiran.p@gmail.com>1612112082

输出显示包含在“ v1.1”标记文件中的“ fa2c”对象是标记对象。当我们使用cat-file -p命令显示“ fa2c” blob对象的详细信息时,它指向提交“ 089dd”,这是最后一次提交。我们还可以看到标记器名称和标记消息详细信息。