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”,这是最后一次提交。我们还可以看到标记器名称和标记消息详细信息。