Git版本控制系统之分支与标签(版本)
目录
一、Git分支(Branch)
1.1 分支作用
1.2 四种分支管理策略
1.3 使用案例
1.3.1 指令
1.3.2 结合应用场景使用
二、Git标签(Tag)
2.1 标签作用
2.2 标签规范
2.3 使用案例
2.3.1 指令
2.3.2 使用示例
一、Git分支(Branch)
当我们谈论版本控制系统时,分支是一个关键的概念。在 Git 中,分支是用来处理不同代码线路的机制,允许你在项目的不同部分之间工作而不影响主要代码线。
1.1 分支作用
分支是 Git 中用来处理项目中不同功能或特性的独立线路的工具。它允许你在不影响主要项目的同时进行开发、测试和实验。每个分支都是独立的,修改一个分支不会影响其他分支。
应用场景:
- 新功能开发: 创建一个新的分支,专注于新功能的开发,而不会影响主分支(通常是
master)。 - Bug 修复: 如果在主分支上发现了 bug,可以在一个新分支上进行修复,而不会中断正在进行的开发。
- 实验性开发: 为了尝试一些实验性的想法,可以创建一个分支,在上面进行实验,然后决定是否将其合并到主分支。
1.2 四种分支管理策略
在Git中,分支有四个主要的环境,通常被称为四种基本的分支管理策略:
一、主分支(Master/Main)
- 作用: 主分支通常是项目的主要分支,包含了当前最稳定、可部署的代码。
- 应用场景: 当开发新功能或修复 bug 时,通常从主分支创建新的分支进行工作。
二、开发分支(Develop):
- 作用: 开发分支是用于集成各种功能的主分支。当一个开发周期结束时,开发分支通常会合并到主分支,形成一个稳定的版本。
- 应用场景: 在开发新功能时,从主分支创建一个新的开发分支,完成开发后再将其合并回开发分支。
三、特性分支(Feature):
- 作用: 特性分支用于开发单个功能或特性。每个特性都有一个对应的特性分支,使得功能的开发独立于主分支和其他特性。
- 应用场景: 当需要添加新功能时,从开发分支创建一个新的特性分支,完成开发后将其合并回开发分支。
四、发布分支(Release):
- 作用: 发布分支用于准备发布新版本。在发布分支上进行最后的测试、文档更新和版本号增加等操作。
- 应用场景: 当开发周期结束时,从开发分支创建一个新的发布分支,准备发布。发布后,将发布分支合并回主分支和开发分支。
这些环境提供了一种有效的方式来组织团队的工作流,确保代码的稳定性和可维护性。使用这些环境,可以清晰地了解每个分支的目的和状态,从而更轻松地协作和集成代码。这种分支管理策略通常被称为Git Flow,是一种在软件开发中广泛应用的工作流程。
1.3 使用案例
1.3.1 指令
# 查看本地分支
git branch # 创建新分支
git branch feature-branch# 切换到新分支
git checkout feature-branch# 或者一步到位(创建+切换)
git checkout -b feature-branch# 合并分支到主分支
git checkout master
git merge feature-branch# 删除已合并的分支
git branch -d # 删除远程分支
git push origin --delete dev # 提交分支 如果远程没有这个分支他会自动创建这个分支
git push origin feature-branch
1.3.2 结合应用场景使用
主分支(Master/Main): 主分支是项目的默认分支,通常包含了最新的稳定版本。在许多项目中,主分支的名称是 master 或 main。

1、创建并切换分支:你可以创建一个新的分支,这个分支是从当前工作目录的状态创建的,包含了当前工作目录中的所有文件和文件夹。

2、在分支上工作: 在特定的分支上工作时,你可以进行修改、添加新文件等操作。这些操作不会影响其他分支,因为每个分支都有独立的工作目录。

测试:新建的两个文件添加都暂存区再提交到本地仓库之后,切换分支会是怎样的效果呢?
切换到master之后,原来添加的文件就消失了
3、提交分支

就可在gitee远程仓库中查看了
在此分支开发的代码与其他互不相干了,若开发完成可与主分支进行合并

二、Git标签(Tag)
2.1 标签作用
标签是一个指向特定提交的引用,通常用于标记版本发布。标签可以使你在不同版本之间轻松切换,而不必记住各个提交的哈希值。
应用场景:
- 版本发布: 在发布一个稳定版本时,可以为该提交打上标签,以便将来可以轻松地找到和检出该版本。
- 历史记录标记: 在项目的关键点上打标签,以便于回顾项目的历史记录。
2.2 标签规范
在 Git 中,标签的命名规则相对灵活,但有一些推荐的约定和最佳实践:
-
版本号: 最常见的标签是用于表示软件版本的。使用语义化版本号是一种常见的做法,其中版本号包括主版本号、次版本号和修订号,形式为
MAJOR.MINOR.PATCH。例如:v1.0.0。 -
前缀: 通常,标签前面加上字母 'v' 作为版本的前缀是一种常见的做法。例如:
v2.1.3。 -
发布候选(Release Candidate): 有时在软件发布前可能有一些预发布版本,可以使用
-rc或其他类似的标记。例如:v1.0.0-rc。 -
修订版或修复版本: 有时可能需要对某个版本进行修复,可以通过在版本号后添加修复版本号,如
v1.0.1。 -
时间戳: 在某些情况下,可以使用时间戳作为标签,特别是在需要唯一性的情况下。例如:
v20220101. -
语义化标签: 使用能够清晰表达标签目的的语义化标签。例如:
release-2.0,feature-new-login, 等。
注意事项:
- 避免使用特殊字符,空格或弱引用字符,以免引起不必要的问题。
- 标签名称对大小写敏感,因此
v1.0和V1.0是两个不同的标签。 - 在使用标签时要保持一致性,遵循项目内的约定。
总体而言,标签的命名规则是由项目的团队来定义的。选择一种清晰、有意义、易于理解的命名约定对于项目的长期维护和协作是非常有帮助的。
2.3 使用案例
2.3.1 指令
# 列出所有标签
git tag# 添加标签
git tag v1.0.0# 附注标签: 包含标签的名称、邮箱、日期和标签消息。它是一个更详细的标签类型。
git tag -a v1.0.0 -m "Version 1.0.0"# 删除标签
git tag -d v1.0.0# 删除远程标签(已推送的标签)
git push origin --delete v1.0.0# 推送标签
git push origin v1.0.0# 如果你有多个标签,可以使用 --tags 选项一次性推送所有标签。
git push origin --tags
2.3.2 使用示例
这是一个简单的当前版本代码的标签推送:

推送标签后,其他团队成员可以通过拉取最新的标签来获取项目中的特定版本。例如:
git pull origin v1.0.0.20231112_dev
这将获取远程仓库中的 v1.0 标签,并将你的本地仓库切换到这个版本。
相关文章:
Git版本控制系统之分支与标签(版本)
目录 一、Git分支(Branch) 1.1 分支作用 1.2 四种分支管理策略 1.3 使用案例 1.3.1 指令 1.3.2 结合应用场景使用 二、Git标签(Tag) 2.1 标签作用 2.2 标签规范 2.3 使用案例 2.3.1 指令 2.3.2 使用示例 一、Git分支&…...
JSP运行环境搭建
将安装JSP引擎的计算机称作一个支持JSP的Web服务器。这个服务器负责运行JSP,并将运行结果返回给用户。 JSP的核心内容之一就是编写JSP页面,JSP页面是Web应用程序的重要组成部分之一。一个简单Web应用程序可能只有一个JSP页面,而一个复杂的Web应用程序可能由许多JSP…...
React通过属性 (props) 和状态 (state) 来传递和管理组件的数据
import React, { useState } from react;// 子组件 const ChildComponent (props) > {return (<div><h2>Hello, {props.name}!</h2></div>); }// 父组件 const ParentComponent () > {const [name, setName] useState(John Doe);const handle…...
Web相机和浏览器的二维码扫描方案
Web相机和适用于浏览器的二维码扫描方案 qr-camera 在线体验 | English 功能 支持浏览器扫描二维码支持拍照支持录像功能支持二维码解析和生成 quickstart npm i qr-cameraimport {QRCamera} from qr-camera;function main(){const camera new QRCamera();document.body…...
云端部署ChatGLM-6B
大模型这里更新是挺快的,我参考的视频教程就和我这个稍微有些不一样,这距离教程发布只过去4天而已… 不过基本操作也差不多 AutoDL算力云:https://www.autodl.com/home ChatGLM3:https://github.com/THUDM/ChatGLM3/tree/main Hug…...
设计模式(3)-结构型模式
结构型模式 结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。 由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则…...
C/C++调试工具 - gdb详解
C/C调试工具 -gdb详解 1 简介 2 常用的命令 3 使用的条件 4 程序调试 4.1 直接运行程序 4.2 断点调试(在某一行) 4.3 断点调试(在函数入口处打断点) 5 调试core文件 5.1 生成core文件的方法 5.2 调试core文件 1 简介 GDB是Linux下非常好用且强大的调试工具。GD…...
传奇GOM引擎微端连接不上如何解决
Gom传奇引擎的微端连不上的原因可能有很多,比如网络问题、服务器配置问题、版本兼容性问题等。1.检查网络连接:首先要确保你的网络连接稳定。如果遇到网络问题,比如网络延迟过高,可能会导致你无法连接到服务器。建议使用稳定的网络…...
Easymesh介绍
1.什么是Easymesh 什么是Easymesh,这里需要介绍到有3个点,分别是WFA、MAP和Easymesh。 WFA是Wi-Fi 联盟,Wi-Fi 联盟是专门针对 Wi-Fi 主题的标准创建机构,并且制定新标准,在 Wi-Fi 基础上提供可用功能,全球成员超过 800 家(SoC、制造商和 SW 公司) MAP 是 Multi-AP Te…...
图像相似度对比方法
1.哈希方法,其中包括均值哈希、插值哈希、感知哈希方法。计算出图片的哈希值,一般使用汉明 距离计算两个图片间的差距。 2.直方图算法,其中包括灰度直方图算法,RGB直方图算法, 3.灰度图算法:MSE、SSIM、…...
C++ 配合图形库实现画线效果
#include<stdio.h> #include <conio.h> #include<math.h> #include <graphics.h> // 引用图形库头文件 #define N 12 int List[N][N];void draw() {for (int i 0; i < N; i) {int x 200 * cos(2 * 3.14 * i / N);int y 200 * sin(2 * 3.1…...
zookeeper应用之分布式屏障
分布式系统中某些节点任务当满足某个条件时才允许继续运行,如果不满足则当前节点需要等待。这个时候就需要一个屏障来阻止节点的处理。ZooKeeper Barrier是ZooKeeper提供的一种用于分布式环境中实现同步和协调的机制。具体逻辑就是: 1、检测某个barrier…...
PDBADMIN 的作用,命名,重建 以及能否DROP
Creating a pluggable database using below SQL: create pluggable database psample1 admin user psample_admin identified by "XXXXXXXXXXXXXXX roles(connect) create_file_destDGEHDB; What if user psample_admin gets dropped accidentally? Is it important?…...
华为L410上制作内网镜像模板02
原文链接:华为L410上制作离线安装软件模板02 hello,大家好啊,今天给大家带来第二篇在内网搭建Apache服务器,用于安装完内网操作系统后,在第一次开机时候,为系统安装软件的文章,今天给大家介绍在…...
美国材料与试验协会ASTM发布新版玩具安全标准 ASTM F963-23
美国材料与试验协会ASTM发布新版玩具安全标准 ASTM F963-23 2023年10月13日,美国材料与试验协会(ASTM)发布了新版玩具安全标准ASTM F963-23 根据CPSIA的规定,当ASTM将ASTM F963的拟定修订意见通知CPSC时,若CPSC认为…...
Postman模拟上传文件
如图,在F12抓到的上传文件的请求 那要在postman上模拟这种上传,怎么操作呢,如图,选中【Select File】选取文件上传即可...
【系统架构设计】架构核心知识: 1 系统工程与信息系统基础
目录 一 系统工程 二 信息系统 三 电子政务 四 企业信息化与电子商务...
加班把数据库重构完毕
加班把数据库重构完毕 本文的数据库重构是基于 clickhouse 时序非关系型的数据库。该数据库适合存储股票数据,速度快,一般查询都是 ms 级别,不需要异步查询更新界面 ui。 达到目标效果:数据表随便删除,重新拉数据以及指…...
Centos(Linux)安装mysql数据库
1. 环境准备 1.1 更新系统和安装依赖项 在进行MySQL安装之前,确保系统包是最新的,并安装必要的依赖项: yum update yum install epel-release yum install wget 1.2 下载MySQL社区版软件包 使用https方式下载MySQL社区版软件包…...
【数据结构】深度剖析ArrayList
目录 ArrayLIst介绍 ArrayList实现的接口有哪些? ArrayList的序列化:实现Serializable接口 serialVersionUID 有什么用? 为什么一定要实现Serialzable才能被序列化? transient关键字 为什么ArrayList中的elementData会被transient修…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
Python异步编程:深入理解协程的原理与实践指南
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 持续学习,不断…...
uniapp获取当前位置和经纬度信息
1.1. 获取当前位置和经纬度信息(需要配置高的SDK) 调用uni-app官方API中的uni.chooseLocation(),即打开地图选择位置。 <button click"getAddress">获取定位</button> const getAddress () > {uni.chooseLocatio…...


