扯一扯Git的标签Tag
扯一扯Git的标签
今天来扯一下Git的标签(即 Tag),它是什么,它的作用,它和分支(Branch)的区别,最后是它的API。
1 是什么
Tag是Git版本管理中的一个标签/标记,它本质上是指向某个commit的指针。
2 作用
Tag主要⽤于发布版本的管理,⼀个版本发布之后,我们可以为Git打上 V.1.0.1,V.1.0.2 ... 这样的标签,并且是针对某个分支中的某个commit打标签。
我们想对某个特定的commit添加标记,比如要标识版本信息,这时候就可以用的Git中的打标签功能。打Tag就类似于我们看书放书签一样,以后可以直接用Tag找到提交的位置,不然的话,就只有看commit信息定位到指定位置,而commit是很多很多的,不方便查找和定位。
3 和分支(Branch)的区别
tag感觉跟branch有点相似,但是本质上和分⼯上是不同的:
tag 对应某次commit, 是⼀个点,是不可移动的。
branch 对应⼀系列commit,是很多点连成的⼀根线,有⼀个HEAD 指针,是可以依靠 HEAD 指针移动的。
所以,两者的区别决定了使⽤⽅式,改动代码⽤ branch ,不改动只查看⽤ tag。
tag 和 branch 的相互配合使⽤,有时候起到⾮常⽅便的效果,例如:已经发布了 v1.0 v2.0 v3.0 三个版本,这个时候,我突然想不改现
有代码的前提下,在 v2.0 的基础上加个新功能,作为 v4.0 发布。就可以检出 v2.0 的代码作为⼀个 branch ,然后作为开发分⽀。
4 API
-
为某个提交打标签
- 为指定的提交ID上打标签
, 为提交ID前几位,也可以是完整的ID: git tag -a <tagname> -m "版本介绍" <commit id>
- 在本地为当前最新的提交打标签(后面不跟commit id,默认是最新 commit)
git tag -a <tagname> -m '版本介绍'
- 为指定的提交ID上打标签
-
查看标签
- 查看本地标签
- 查看所有本地标签:
git tag
- 按照关键字查看,其中 v1.* 就是类似模糊匹配的关键字:
git tag -l `"v1.*"`
- 查看远程标签
git ls-remote --tags
-
查看标签详情
git show <tagname>
-
推送标签到远程服务器上
# push单个特定的tag (origin代表remote名字,可以省略,表示使用默认remote) git push [origin] <tagname> # push所有tag git push [origin] --tags
-
删除标签
可以一次删除多个标签git tag -d <tagname1> [<tagname2> <tagname3> ...]
-
检出标签
可以根据标签,检出相应的代码git checkout <tagname>
参考链接:https://wenku.baidu.com/view/9269e62b7fd184254b35eefdc8d376eeaeaa17f5.html
https://blog.csdn.net/huangbin123/article/details/119670322