git拉取指定tag的代码_Git应用详解第八讲:Git标签、别名与Git gc

第八讲: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框架:

    9844f8b6c2330216fcc307423c1a993e.png
    image-20200418125541646

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

    c3ac64e86449fd4de362a5c54e323e1b.png
    image-20200418125721571
  • 「版本管理」:可以通过标签的形式记录项目某一阶段的状态,方便管理;

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

    5df75f8ebb950f8468d2cac0b712eedc.png
    image-20200418165957032
「查看标签文件」

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

424ced1822af56815209d769c643f4d7.png
image-20200418122516160

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

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

8889c747ae2d7ea5e4701b1a18a8d7ae.png
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值;

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

b544920358aa7ebefe26bb61eeea61dd.png
image-20200418124847587

2.创建标签

git tag

创建一个轻量级标签:

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值