GIT 中如何打标签(git tag)

本文介绍了Git中的标签功能,包括轻量标签和附注标签的创建、查看、删除及推送操作。轻量标签直接指向提交的SHA-1值,而附注标签包含更多元信息并存储在单独的对象中。此外,文章还讨论了如何将标签推送到远程仓库及删除远程标签的方法,强调了标签与分支的独立性。
摘要由CSDN通过智能技术生成


前言

在我们开发的过程中,可能经过多次 commit 提交才会确定一个版本,那么除了用 commit comments 来标识一次提交记录,还有没有什么更好的办法呢?GIT 为我们提供了标签这个功能,使用标签可以对某一次提交记录做上一个小标记,就像我们看书的时候,看到很有意思想要做个记号,可以用小的标签纸贴在那一页的边上,这让我们以后可以更方便的索引。


0x1 GIT 标签常用指令

GIT 中的标签分为两种,一种是轻量标签(lightweight tag),一种是附注标签(annotated tag)。以下是一些常用的与标签相关的命令:

  • git tag <lightweght_name>:为当前分支所在的提交记录打上轻量标签。
  • git tag <lightweght_name> <commit SHA-1 value>:为某次具体的提交记录打上轻量标签。
  • git tag -a <anotated_name> -m <tag_message>:为当前分支所在的提交记录打上附注标签。
  • git tag:列出所有的标签名。
  • git tag -d <tag_name>:删除某个标签,本质上就是移除 .git/refs/tags/ 中对应的文件。
  • git show <tag_name>:显示标签对应提交记录的具体信息。
  • git push <remote> <tag_name>:推送某个标签到远程仓库。
  • git push <remote> --tags:推送所有标签到远程仓库。
  • git push <remote> --delete <tag_name>:删除远程仓库中的某个标签。

[注]:标签与分支不相关。


0x2 轻量标签

轻量标签的创建十分简单,使用命令 git tag <lightweight_name> 则会为当前所在的提交记录打上一个轻量标签。那么这个命令会发生什么呢?其实很简单,在使用这个命令后,会在 .git/refs/tags/ 目录下生成一个以 <lightweight name> 为名字的文件,文件中存放了标签所对应提交记录的 commit 对象的 SHA-1 值。如下图所示:
在这里插入图片描述
假设我想为上述三个提交记录中的第一次提交打上版本 0 的标签,也是很容易做到的,同时使用 git log 命令时也会显示出标签的名称:
在这里插入图片描述


0x3 附注标签

创建附注标签也非常简单,只要加上 -a 选项即可。同时还可以通过 -m 选项指定一条存储在标签中的信息,如果没有指定则 GIT 会打开编辑器要求你输入。假如我们为当前的提交记录打上一个附注标签,可以查看标签如下:
在这里插入图片描述
附注标签同样也在 .git/refs/tags/ 目录下生成对应的文件,但是这个文件中不再存储该标签对应的 commit 对象的 SHA-1 值,而是存放了一个称为 tag 对象的 SHA-1 值,这个 tag 对象中就存储了与这个附注标签相关的信息(包括打标签者的名字、电子邮件地址、日期时间、一个标签信息)和这个标签所对应的 commit 对象的 SHA-1 值。 我们可以查看如下:
在这里插入图片描述


0x4 远程仓库中的标签

我们想想标签文件所在的文件夹和其中保存的信息,是不是觉得其和分支很像?这使得他也有一个特点,就是在我们使用 git push 命令推送某个分支的时候,标签并不会被推送到远程仓库,所以我们必须显式的推送标签到远程仓库

使用下面两种命令则可以推送标签到远程仓库:

  • git push <remote> <tag_name>:推送某个标签到远程仓库。
  • git push <remote> --tags:推送所有标签到远程仓库。

同样,在删除本地的标签后,要想删除远程仓库的标签,也必须使用的显式的命令:

  • git push <remote> --delete <tag_name>:删除远程仓库中的某个标签。
  • git push <remote> :refs/tags/<tagname>:删除远程仓库某个标签的等价方式,相当于将冒号前面的空值推送到远程标签名,从而高效地删除它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值