这篇文章我想诚实面对自己,也勇敢地说出来。
对。我不知道要写什麽了... 我已经把该怎麽新建本地数据库跟 push 到 GitHub 上都阐述完了(毕竟人家开发 git 也才花 10 天,我还想写到 30 天)。
焦虑着该怎麽面对剩下的 11 天(加上今天)、反覆上网搜寻有关 git 的一些资料,想要从茫茫大海中捞一点有用、有趣的东西来写,最後我决定!接下来的日子我会介绍一些「不知道也不会死的 git 相关功能」
因为前面 19 天讲的内容已经足够进行版本控制了,所以接下来就让我们来看一些 git 很酷的功能吧!
那麽,就从 tag 开始。
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 还是留在原来贴的位置上。
而 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 可以把它想成是一张标签纸贴上去就好那麽的简单!
首先,先查询目前 commit 的 SHA-1 码,确认想要贴到哪个 commit 上
git log --oneline
接下来,使用以下语法就可以贴上 tag 了。
後面的 <commit_SHA-1>
也可以忽略不打,这样的话是直接贴到最新的 commit 上。
git tag <tag_name> <commit_SHA-1>
而 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 罗!
git tag
倘若只想看到 1.8.5 系列的标签,你可以执行以下指令
git tag -l "v1.8.5*"
Git 基础 - 标签
为你自己学 git-使用标签
【冷知识】标签跟分支有什麽不一样?
<<: Angular 深入浅出三十天:表单与测试 Day20 - E2E 测试实作 - 登入系统
後端开发人员需求旺盛,如果您想成为一名後端开发人员,您需要学习一些基本技能。但不要害怕——如果你曾经...
今日目标 上篇仅介绍如何将数值转换为 Numpy array 的方法与其中的使用方式,这边要来提一下...
标题杀人 思路先於技术 莫忘初心 标题杀人 曝光就是第一个敲门砖,Google 演算法好不容易愿意...
上一篇我们认识了基本的 R-CNN 和 Fast-RCNN,接着来看 Faster RCNN! Fa...
延续昨天的构想,今天来试试看能否成功。 昨天的构想好像有点错误,因为购物车只会有1台,且纪录是暂时的...