【Day20】Git 版本控制 - git tag

这篇文章我想诚实面对自己,也勇敢地说出来。

对。我不知道要写什麽了... 我已经把该怎麽新建本地数据库跟 push 到 GitHub 上都阐述完了(毕竟人家开发 git 也才花 10 天,我还想写到 30 天)。

焦虑着该怎麽面对剩下的 11 天(加上今天)、反覆上网搜寻有关 git 的一些资料,想要从茫茫大海中捞一点有用、有趣的东西来写,最後我决定!接下来的日子我会介绍一些「不知道也不会死的 git 相关功能

因为前面 19 天讲的内容已经足够进行版本控制了,所以接下来就让我们来看一些 git 很酷的功能吧!

那麽,就从 tag 开始。


tag V.S. branch

tag,顾名思义就是标签。

为什麽需要对版本贴上标签?因为这样才能更快的找到重要的版本,像是你在下载软件时会看到 v1.0.4 这个东西就是所谓的 tag!

这样听起来,tag 跟 branch 不是很像吗?因此我查找了资料,看到【冷知识】标签跟分支有什麽不一样?这篇文章来做以下解释。

首先,这两个东西都一样放在 .git/refs 目录下,只是 branch 是在 heads 目录,tag 则是在 tags 目录。

甚至连他们的内码都长很像,都一样是 SHA-1 码:

$ cat .git/refs/heads/master
db3bbec63301d1c638e828c9a38a29314c8a0c44

$ cat .git/refs/tags/big_cats
552a844022bad7f24c5e6e3b0fc2528c8ec86df7

那他们到底差在哪?

最大的差别是「branch 会随着 Commit 而移动,但 tag 不会」。

当 Git 往前推进一个 Commit 的时候,它所在的 branch 会跟着往前移动。但 tag 一旦贴上去之後,不管 Commit 怎麽前进,tag 还是留在原来贴的位置上。

创建 git tag

而 tag 有两种,一种是轻量级的标签(lightweight tag),另一种是有附注解的标签(annotated tag),以下为 git 官方对这两种 tag 的解释:

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

lightweight tag

lightweight tag 可以把它想成是一张标签纸贴上去就好那麽的简单!

首先,先查询目前 commit 的 SHA-1 码,确认想要贴到哪个 commit 上

git log --oneline

接下来,使用以下语法就可以贴上 tag 了。
後面的 <commit_SHA-1> 也可以忽略不打,这样的话是直接贴到最新的 commit 上。

git tag <tag_name> <commit_SHA-1>

annotated tag

而 annotated tag 跟 lightweight tag 最大的差异就是 annotated tag 可以添加讯息作为注解,而创建的方式和 lightweight tag 也只差一点点而已。

git tag <tag_name> <commit_SHA-1> -a -m "message"

-a 就是让 git 知道你要创建的 tag 是 annotated tag,-m 就跟 commit 输入讯息一样。

查看 tag

创建完成後,想要查看已经存在的 tag 该怎麽做呢?

只要直接输入以下指令,就会一次列出所有 tag 罗!

git tag

倘若只想看到 1.8.5 系列的标签,你可以执行以下指令

git tag -l "v1.8.5*"

Reference

Git 基础 - 标签
为你自己学 git-使用标签
【冷知识】标签跟分支有什麽不一样?


<<:  Angular 深入浅出三十天:表单与测试 Day20 - E2E 测试实作 - 登入系统

>>:  DAY20:ANR程序无回应之简介

必须具备後端开发技能

後端开发人员需求旺盛,如果您想成为一名後端开发人员,您需要学习一些基本技能。但不要害怕——如果你曾经...

[2020铁人赛Day27]糊里糊涂Python就上手-Numpy的观念与运用(下)

今日目标 上篇仅介绍如何将数值转换为 Numpy array 的方法与其中的使用方式,这边要来提一下...

爆品技术文的3个写作技巧,一点就通

标题杀人 思路先於技术 莫忘初心 标题杀人 曝光就是第一个敲门砖,Google 演算法好不容易愿意...

[D22] 物件侦测(3)

上一篇我们认识了基本的 R-CNN 和 Fast-RCNN,接着来看 Faster RCNN! Fa...

第21天 - 来试着做一个简易购物系统(5),统计购物车价格

延续昨天的构想,今天来试试看能否成功。 昨天的构想好像有点错误,因为购物车只会有1台,且纪录是暂时的...