Git中tag标签的使用教程
作者:農碼一生 时间:2022-06-26 08:15:00
一、tag简介
tag是git版本库的一个标记,指向某个commit的指针。
tag主要用于发布版本的管理,一个版本发布之后,我们可以为git打上 v.1.0.1 ,v.1.0.2 …这样的标签。
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 ,然后作为开发分支。
二、tag使用命令
1、列出所有tag
git tag //默认显示
git tag -l
git tag -n //查看所有tag和说明
git tag -l v1.* //查看匹配到的tag
git ls-remote --tags origin //查看远程所有tag
2、查看tag信息
git show v1.0.1 //查看v1.0.1的内容
3、创建tag
git tag v2.0
git push origin //远程tag的创建
4、创建带注释tag
git tag -a v2.1 -m '第二版本' ////-m 后跟的是注释信息, 当使用git show v2.1的时候, 会显示这个注释信息
git push origin //远程tag的创建
5、推送tag
git push origin [tagname] //推送到远程仓库
git push origin --tags //推送所有tag到远程仓库
6、特定commit_id创建tag
git log --pretty=oneline //查看当前分支的提交历史 里面包含 commit_id
git tag -a
7、删除tag
git tag -d //方式一
git tag -d [tagname] //方式二
git push origin :refs/tags/v1.0.2 //方式一:远程tag的删除
git push origin --delete <tagname> //方式二:远程tag的删除
8、检出tag
git checkout -b
//因为 tag 本身指向的就是一个 commit,所以和根据commit id 检出分支是一个道理。
//但是需要特别说明的是,如果我们想要修改 tag检出代码分支,那么虽然分支中的代码改变了,但是 tag标记的 commit还是同一个,标记的代码是不会变的,这个要格外的注意
git checkout -b branch_name tag_name //新建分支检出
//注意不要在检出标签后做修改和提交,会出现不必要的麻烦。正确的做法应该是创建一个新的分支,在新的分支上做修改和提交。
9、切换tag
git checkout [tagname] //切换到指定tag
10、为之前提交的添加tag
git log --pretty=oneline --abbrev-commit //第一步:找到提记录
git tag -a v3.1 [指定标签名] [commitID] //第二步:为记录创建tag
//git tag -a "v1.0.2" 9fbc3d0
11、重命名tag
//1.强制替换,再删除原有
git tag -f <new-tag> <old-tag>
git tag -d <old-tag>
//2.删除原有tag,重新添加
git tag -d <old-tag>
git tag -a <new-tag> -m"information"
来源:https://www.cnblogs.com/wml-it/p/15588730.html
标签:Git,tag,标签,使用,教程
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Numpy 数据处理 ndarray使用详解
2021-01-30 18:05:11
![](https://img.aspxhome.com/file/2023/7/101067_0s.jpg)
Web Jmeter–接口测试工具详解
2022-06-27 04:24:32
![](https://img.aspxhome.com/file/2023/7/131967_0s.png)
Python psutil模块简单使用实例
2023-08-10 21:15:37
MySQL中由load data语句引起死锁的解决案例
2024-01-19 19:37:14
![](https://img.aspxhome.com/file/2023/6/121586_0s.png)
python反转(逆序)字符串的6种方法详细
2023-03-14 10:38:41
PHP的mysqli_select_db()函数讲解
2023-06-07 18:59:44
![](https://img.aspxhome.com/file/2023/8/55458_0s.png)
python实现批量图片格式转换
2021-07-15 16:07:42
ECharts框架分段视觉映射在移动端适配
2024-04-28 09:53:49
![](https://img.aspxhome.com/file/2023/0/132700_0s.png)
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
2023-04-25 04:15:56
javascript 词法作用域和闭包分析说明
2024-04-17 09:56:42
![](https://img.aspxhome.com/file/2023/8/136458_0s.jpg)
js 实现的可折叠留言板(附源码下载)
2024-04-22 13:07:49
Mysql的列修改成行并显示数据的简单实现
2024-01-24 01:39:54
![](https://img.aspxhome.com/file/2023/0/88500_0s.png)
解析ajax事件的调用顺序
2023-11-21 18:12:56
GO语言实现文件上传代码分享
2023-07-22 10:56:33
python 两种方法修改文件的创建时间、修改时间、访问时间
2023-08-10 03:06:52
Python实现文件内容批量追加的方法示例
2021-11-13 13:47:40
Python多模块引用由此引发的相对路径混乱问题
2021-07-11 03:57:10
![](https://img.aspxhome.com/file/2023/8/124388_0s.png)
简析 IOS 程序图标的设计
2011-04-28 09:39:00
python实现sm2和sm4国密(国家商用密码)算法的示例
2021-11-17 08:02:13
asp如何实现无组件上传二进制文件?
2010-06-03 10:09:00