Git应用详解第八讲:Git标签、别名与Git gc

前言

这一节主要介绍Git标签、别名与Git的垃圾回收机制。

一、Git标签(tag)

1.标签的实质

标签与分支十分相似,都是指向某一次提交;并且,它们的值都为各自指向提交的SHA1值;但是,不同于会随着提交的变化而变化的分支,一旦给某次提交添加了标签,该标签就永远不会发生变化。

**注意:**标签标识的是某一次提交,这次提交可以是任何分支上的任何一次提交。

两类标签

Git标签有两种:

  • 轻量级标签lightweight):不可添加注释;
  • 带有附注的标签annotated):可以添加注释;

Annotated tags are meant for release while lightweight tags are meant for private or temporary object labels.

以上是git官方文档对两种标签的说明,大意是:带注释的标签用于发布,而轻量级标签则用于私人或临时对象。

什么时候打标签呢?

  • **版本发布:**一般master分支都会作为项目的发布分支,当项目开发到了一个成熟的阶段,准备在master分支进行发布时。一般都会在master分支的当前提交上打上一个类似"v1.2"的标签;

    比如Vue框架:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rS9higAI-1587204460088)( http://ahuntsun.gitee.io/blogimagebed/img/git/lesson8/1.png)]

    可以看到有许多标签,并且可以在releases选项中查看标签和发布版本:

    image-20200418125721571

  • **版本管理:**可以通过标签的形式记录项目某一阶段的状态,方便管理;

    比如管理学习微信小程序时每个知识点的代码:

    image-20200418165957032

查看标签文件

如下图所示,分别给master分支的提交mas2添加一个轻量级标签v1.0和一个带有附注的标签v2.0

image-20200418122516160

git doggit log --all --decorate --oneline --graph的别名,后面会讲解;

随后,查看存储标签文件的.git/refs/tags目录:

image-20200418123105227

可以看到:

  • tags目录下存储着添加的标签文件v1.0v2.0
  • 分别打开标签文件v1.0v2.0,它们的值都是一个SHA1值,并且与添加标签时所在提交mas2SHA16920a6e...相等。
  • emm...等等!并不相等呀,只有v1.0的值与提交mas2SHA1值相等,而与v2.0的值并不相等!
  • 为什么给同一次提交mas2添加的标签,它们的SHA1值会不相等呢?这是因为v1.0是轻量级标签,而v2.0是带有附注的标签。

虽然两个标签标记的都是同一次提交,但是它们的构造不一样:

  • 轻量级标签v1.0直接将这次提交的SHA1值作为自己的SHA1值;

  • 而带附注的标签v2.0会创建一个tag对象,它的SHA1值是tag对象的SHA1值;

这就是轻量级标签与带有附注标签的区别。不过这两个标签仍然会指向同一次提交,如下图所示:

image-20200418124847587

2.创建标签
git tag <tag_name>

创建一个轻量级标签:

image-20200311143441005

git tag -a <tag_name> -m '注释'

创建一个带有附注的标签:

image-20200311143555121

3.查看标签
git tag

显示添加的所有标签:

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值