git标签的管理与思考
git 标签管理
git 如何打标签呢?
标签是什么?
标签 相当于一个 版本管理的一个贴纸,随时 可以通过标签 切换到 这个版本的状态 ,
有人可能有疑问 git commit
就可以知道 代码的改动了, 为啥还需要标签来管理呢?
首先 多人协作开发的时候,有很多commit 有时候会比较乱,而tag 一般完成了一个release, 并且测试通过后, 再去打个 标签。 代表一次上线功能的小小的里程碑。
注意标签 是不可以 像分支一样 可以移动的.一旦打完标签就意味着 这个版本确定下来, 如果发现了这个版本的bug ,要基于这个标签 创建分支 进行修复,而不能直接在某个标签进行修改代码.
标签和 commitID 的区别是什么呢?
标签 本质来说 和commitID 没有区别. 唯一的区别 标签是一个可以人类可以阅读的名称. commitID 是一个hash 值, 一般不是那么容易记住.
可以通过标签名称 检出分支, 当然也可以通过某个 commitID 检出分支. 标签的意义 就是针对某次commit 完成了一个产品相对完整的功能,或者优化, 或者准备好了一个即将可以发布的代码版本, 我们需要记录一下这个伟大的时刻, 仅此而已. 当然 你可以说, 我通过 commit 里面的message 也是 可以说明这个 重要的提交 git commit -m "release version"
当然是可以的,没有问题. 如果每个人都能有commit 信息的规范做法,那么 tag的作用 就不那么大. 然而在真实开发体验中, 很多commit message, 写的相对没有那么详细, 比如: fix a bug , Update xxx file, optimize code ,refactor code 等等 这些commit message. 会让代码的维护者头大,随着时间的推移, 都不知道哪个是重要的事件,或者里程碑. 这个时候 我们就需要 里程碑一样的东西, 就是对某个commitID 打标签, 标志这次这次完成了一个大的功能. 或者一次大版本测试,准备发布. 这就是 tag 存在的意义.
我来演示一下根据 tag 检出分支,以及根据 commitID 检出分支
# 通过 tag 检出分支
git checkout -b b_2_0_tag 2.0.0 # 通过commitID 检出分支
git checkout -b b_2_0 c1f2646
检出结果如下: 我们可以清晰的看到,两个分支 在同一个 commitID, 两者完全一样的.
查看标签
git tag
[xxxx@xxxxx xxxxx]$ git tag
db_sharding_v0.1
db_sharding_v0.2
v20191126
v20191127
v20191127.1
v20191203
v20200119
v20200204
v20200206
支持 匹配查看标签
git tag -l 'v2020*'
[ec2-user@10-181-160-142 history_retriever]$ git tag -l 'v2020*'
v20200119
v20200204
v20200206
查看某一个标签的详情
git show 标签名称
git show v20200206
打标签 并且 推送到 远程 共享标签
git tag -a 标签名称 -m comment 信息 ,message 一些描述信息
一般打标签都是针对当前的分支,最后一个提交
-a
: 理解为 annotated
的首字符,表示 附注标签
-m
: 指定附注信息
git tag -a v20200206 -m "稳定版,release version" # 推送到远程 标签(共享标签)
git push origin v20200206
后期打标签
假设已经完成了某个feature 已经提交了代码,但是 忘记 打tag 了,可以通过 commit 进行打tag
# 查看提交历史
git log --pretty=oneline# 一行显示 commit 信息
git log --oneline
[xxxxx@xxxxxx xxxxxx]$ git log --pretty=oneline
5f3f449120676310a581df86c3a58144a1da045d Merged PR 12558: test query string
3b34e0dd65fff220812a4f1858e20e1a3326b497 ut 排除
8a3a0428e4276d160c7ab220ecbf05357c17dd53 1
1892ad9d0d585bc56cd06f3c398e4b52bd902fe3 test query string
25fbee19721013c685df903cfca20517dcfea357 test query string
d6cef413a0cde8c0233ed5ff13f259bc76b9c688 Merged PR 12546: ut - rank task
0f633ea5cc0ba357b2c0cead9a1cd280c5c33a8f ut - rank task
根据 commitID 来打标签
git tag -a 标签名称 commitID
git tag -a v20200109.1 0f633ea
删除 本地标签
git tag -d 标签名称
git tag -d v0.0.1
推送一个标签
git tag -d 标签名称
git push origin v0.0.1
推送本地所有的标签到远程仓库
git push origin --tags
删除远程仓库标签
git push origin :refs/tags/标签名
git push origin :refs/tags/v0.0.1
这个命令更加直观
git push origin --delete <tagname>
通过标签检出一个分支
根据 标签 检出一个分支 branch_version3
git checkout -b 分支名 标签名
git checkout -b branch_version3 v3.0.0
参考链接
git-scm.com
git 标签管理
相关文章:

git标签的管理与思考
git 标签管理 git 如何打标签呢? 标签是什么? 标签 相当于一个 版本管理的一个贴纸,随时 可以通过标签 切换到 这个版本的状态 , 有人可能有疑问 git commit 就可以知道 代码的改动了, 为啥还需要标签来管理呢? …...
ESP32网络编程-OTA方式升级固件(基于Arduino IDE)
OTA方式升级固件(基于Arduino IDE) 文章目录 OTA方式升级固件(基于Arduino IDE)1、ESP32的OTA介绍2、OTA升级固件方式3、软件准备4、硬件准备5、代码实现ESP32吸引人的编程方式之一就是通过OTA方式升级固件。本文将详细介绍在Arduino IDE中升级固件。 1、ESP32的OTA介绍 O…...
力扣-151. 反转字符串中的单词
文章目录 看下去,你一定可以理解此题,写的简单易懂力扣题目解题思路函数构成1.反转函数2.消除掉多余空格函数 整体函数 看下去,你一定可以理解此题,写的简单易懂 力扣题目 给你一个字符串 s ,请你反转字符串中 单词 …...

VSCode Keil Assintant 联合开发STM32
文章目录 VSCodeKeil AssistantUV5🥇软件下载🥇配置环境🥇插件安装🥈C/C Extension Pack🥉C/C Extension Pack介绍🥉插件安装 🥈Keil Assistant🥉Keil Assistant介绍🥉插…...
华为交换机基本配置
一、配置时间 sys ntp-service unicast-server 192.168.1.1 ntp-service unicast-server 192.168.1.2 clock timezone UTC add 8 clock timezone CST add 08:00:00 undo ntp-service disable q手动设置一个时间 clock datetime 13:43:00 2023-10-10save ysys保存!保…...
每天一个Linux命令 -- (7)more命令
欢迎阅读《每天一个Linux命令》系列!在本篇文章中,将介绍Linux系统下的more命令,它用于逐屏显示文件的内容。 概念 more命令是Linux系统下的文件逐屏显示命令,用于逐屏显示文件的内容。 命令操作 more命令的语法如下࿱…...

JUnit 之初体验
文章目录 1.定义2.引入1)使用 Maven 工具2)使用 Gradle 工具3)使用 Jar 包 2.样例0)前提1)测试类2)测试方法3)测试断言4)实施 总结 1.定义 JUnit 是一个流行的 Java 单元测试框架&a…...
【前端设计模式】之适配器模式
适配器模式是一种常见的设计模式,用于将一个类的接口转换成客户端所期望的另一个接口。在前端开发中,适配器模式可以帮助我们解决不同框架或库之间的兼容性问题,提高代码的复用性和可维护性。 适配器模式特性 适配器类:适配器类…...

【数据结构】循环队列
🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 🎏队列顺序存储的不足 🎏循环队列的定义 🎏设计循环队列 结语 🎏队列顺序存储的不足 我们假设用一个可以存放为n个数据…...

Docker的资源控制
Docker的资源控制: 对容器使用宿主机的资源进行限制,Docker 通过 Cgroup 来控制容器使用的资源配额,包括 CPU 内存 磁盘i/o Docker 使用Linux自带的功能cgroup,Cgroup 是 ControlGroups 的缩写 C crontrol groups是Linux内核…...

SpringBoot 自动装配原理详解
什么是 SpringBoot 自动装配? 我们现在提到自动装配的时候,一般会和 Spring Boot 联系在一起。但是,实际上 Spring Framework 早就实现了这个功能。Spring Boot 只是在其基础上,通过 SPI 的方式,做了进一步优化。 Spr…...

深度探索Linux操作系统 —— 构建initramfs
系列文章目录 深度探索Linux操作系统 —— 编译过程分析 深度探索Linux操作系统 —— 构建工具链 深度探索Linux操作系统 —— 构建内核 深度探索Linux操作系统 —— 构建initramfs 文章目录 系列文章目录前言一、为什么需要 initramfs二、initramfs原理探讨三、构建基本的init…...

使用cmake构建Qt6.6的qt quick项目,添加应用程序图标的方法
最近,在学习qt的过程中,遇到了一个难题,不知道如何给应用程序添加图标,按照网上的方法也没有成功,后来终于自己摸索出了一个方法。 1、准备一张图片作为图标,保存到工程目录下面,如logo.ico。 …...
VUE宝典之vue-dialog使用
文章目录 🍁vue-dialog概述🍁vue-dialog项目引入🍂安装Vue Dialog插件🍂引入Vue Dialog插件🍂引入 Vue Dialog 组件🍂在组件中使用Vue Dialog 🍁vue-dialog代码示例🍁vue-dialog父子…...

AWTK 串口屏开发(1) - Hello World
1. 功能 这个例子很简单,制作一个调节温度的界面。在这里例子中,模型(也就是数据)里只有一个温度变量: 变量名数据类型功能说明温度整数温度。范围 (0-100) 摄氏度 2. 创建项目 从模板创建项目,将 hmi/…...

鸿蒙Harmony开发初探
一、背景 9月25日华为秋季全场景新品发布会,余承东宣布鸿蒙HarmonyOS NEXT蓄势待发,不再支持安卓应用。网易有道、同程旅行、美团、国航、阿里等公司先后宣布启动鸿蒙原生应用开发工作。 二、鸿蒙Next介绍 HarmonyOS是一款面向万物互联,全…...

【MySQL语言汇总[DQL,DDL,DCL,DML]以及使用python连接数据库进行其他操作】
MySQL语言汇总[DQL,DDL,DCL,DML] SQL分类1.DDL:操作数据库,表创建 删除 查询 修改对数据库的操作对表的操作复制表(重点)!!!!! 2.DML:增删改表中数据3.DQL:查询表中的记录…...

解决方案:Mac 安装 pip
python3 --version 通过以下命令来下载pip: curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py curl命令允许您指定一个直接下载链接。使用-o选项来设置下载文件的名称。 通过运行以下命令安装下载的包: python3 get-pip.py...

【恋上数据结构】前缀树 Tire 学习笔记
Tire 需求分析 如何判断一堆不重复的字符串是否以某个前缀开头? 用 Set\Map 存储字符串(不重复)遍历所有字符串进行判断缺点:时间复杂度 O(n) 有没有更优的数据结构实现前缀搜索? Tire(和 Tree 同音&a…...

2023五岳杯量子计算挑战赛数学建模思路+模型+代码+论文
赛题思路:12月6日晚开赛后第一时间更新,获取见文末名片 “五岳杯”量子计算挑战赛,是国内专业的量子计算大赛,也是玻色量子首次联合移动云、南方科技大学共同发起的一场“企校联名”的国际竞赛,旨在深度融合“量子计算…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
大数据治理的常见方式
大数据治理的常见方式 大数据治理是确保数据质量、安全性和可用性的系统性方法,以下是几种常见的治理方式: 1. 数据质量管理 核心方法: 数据校验:建立数据校验规则(格式、范围、一致性等)数据清洗&…...