git分支

一、引言
分支的命名规范以及管理方式对项目的版本发布至关重要,为了解决实际开发过程中版本发布时代码管理混乱、冲突等比较头疼的问题,我们将在文中阐述如何更好的管理代码分支。

二、总览
在这里插入图片描述
从上图可以看到主要包含下面几个分支:
• master: 主分支,也称为线上分支,主要用来版本发布。

• dev:日常开发分支,该分支正常保存了开发的最新代码。

• release:release 分支可以认为是 master 分支的测试版。比如说某个新增功能开发完成、线上问题紧急修复完成,那么就将 feature/hotfix 分支合并到 release 分支,到了发布日期就合并到 master 分支,进行版本发布。

• feature:具体的功能开发分支。

• hotfix:线上 bug 修复分支。

三、主分支
主分支包括Master Branch、Release Branch、Dev Branch 三个分支:

1、Master Branch
用来进行版本发布,也就是当前线上运行的代码分支

2、Release Branch
Release Branch 在我看来就是 Pre-Master。Release Branch 从 Master Branch 检出,最终会合并到Master Branch,合并后 Master Branch上就是可以发布的代码了。

所有新增功能的开发分支都是从 Dev Branch 检出作为本地分支,以 feature-功能名-姓名首字母简拼,当功能开发完毕的时候,将 feature Branch 合并到 Dev Branch,在测试或预生产环境进行部署,测试通过后,再将 feature Branch 合并到 Release Branch。

如果出现线上问题需要紧急修复,则从 Release Branch 检出作为本地分支,以 hotfix-功能名-姓名首字母简拼, 当问题修复完毕的时候,将hotfix Branch合并到 Dev Branch,在测试环境进行部署,测试通过后,再将 hotfix Branch 合并到 Release Branch,在预发环境再次验证。

待所有的测试和准备工作做完之后,我们就可以将 release 分支合并到 master 分支上,并择机进行线上发布。

3、Dev Branch
dev 就是我们的日常开发分支。

四、辅助分支
1、Feature分支
feature 分支用来开发具体的功能,一般 fork 自 Dev 分支,以 feature-功能名-姓名首字母简拼 进行命名,最终合并到 Dev 、Release分支。比如我们要在下一个版本增加功能1、功能2、功能3。那么我们就可以起三个feature 分支:feature-1-zxz,feature-2-qxh,feature-3-sq。(feature 分支命名最好能够自解释,1、2、3 这并不是一种好的命名)随着我们开发,功能1和功能2都被完成了,而功能3因为某些原因完成不了,那么最终 feature-1-zxz 和 feature-2-qxh 分支将被合并到 Dev 分支,而 feature-3-sq 分支将延期继续进行本地开发工作,功能1和功能2测试完没有问题后,将 feature1 和 feature2 分支将被合并到 Release 分支,最终将 Release 分支合并到 Master 分支。

2、Hotfix 分支
顾名思义,hotfix 分支用来修复线上 bug。当线上代码出现 bug 时,我们基于 Release 分支开一个 hotfix 分支,以 hotfix-功能名-姓名首字母简拼(例如:hotfix-model-base-zxz),修复 bug 之后再将 hotfix 分支合并到 Release 分支,同时 Dev 分支作为最新最全的代码分支,hotfix 分支也需要合并到 Dev 分支上去,同时在不同分支对应的不同环境进行bug回归验证,最终将 Release 分支合并到 Master 分支,进行线上发布即可。

五、注意事项
1、 Feature 分支、Hotfix 分支合并到 Dev 分支,测试通过后,需再合并到 Release 分支,这时候就要求代码合并时需清楚的知道此代码是否已经经过验证。

2、 Dev、Release、Master分支的同步

Release 分支合并到 Master 分支后,若Dev分支无正在测试的功能,建议定时将 Dev、Release、Master 分支进行代码同步。

通过以上分支管理,我们就可以轻松做到:团队成员之间功能并行开发、功能选择性发布、版本发布、线上问题紧急功能开发、紧急问题修复等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/46867.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【是C++,不是C艹】 手把手带你实现Date类(附源码)

💞💞欢迎来到 Claffic 的博客💞💞 👉 专栏:《是C,不是C艹》👈 前言: 恍惚间,已经两个月没更新了 (;д`)ゞ 我忏…

Redis 持久化的手段有哪些 ?RDB 和 AOF 有什么区别 ?

目录 1. Redis 持久化的手段有哪些 2. RDB 和 AOF 有什么区别 2.1 RDB 持久化 2.2 AOF 持久化 2.2.1 AOF 持久化策略有哪些 3. 混合持久化是如何执行的(了解) 1. Redis 持久化的手段有哪些 Redis 持久化的手段有三种: 快照方式&#…

开源数据库Mysql_DBA运维实战 (总结)

开源数据库Mysql_DBA运维实战 (总结) SQL语句都包含哪些类型 DDL DCL DML DQL Yum 安装MySQL的配置文件 配置文件:/etc/my.cnf日志目录:/var/log/mysqld.log错误日志:/var/log/mysql/error.log MySQL的主从切换 查看主…

什么是程序化交易接口?执行三步曲是什么?

在股市中的发展过程中,通过不断的更新迭代,从手动交易到自动交易的过程就有了历史的蜕变,那么对于程序化交易接口(Application Programming Interface, API)其实就是指为程序化交易提供的一组定义和规范,允…

物联网工程应用实训室建设方案

一、物联网工程应用系统概述 1.1物联网工程定义 物联网工程(Internet of Things Engineering)是一种以信息技术(IT)来改善实体世界中人们生活方式的新兴学科,它利用互联网技术为我们的日常生活活动提供服务和增益&am…

时序预测 | MATLAB实现基于CNN-LSTM卷积长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)

时序预测 | MATLAB实现基于CNN-LSTM卷积长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价) 目录 时序预测 | MATLAB实现基于CNN-LSTM卷积长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 MATLAB实现基…

线程面试题-1

看的博客里面总结的线程的八股文 1、线程安全的集合有哪些?线程不安全的呢? 线程安全的: Hashtable:比HashMap多了个线程安全。 ConcurrentHashMap:是一种高效但是线程安全的集合。 Vector:比Arraylist多了个同步化…

安装Vue_dev_tools

Vue控制台出现Download the Vue Devtools extension for a better development experience: 下载Vue_dev_tools,这里给出网盘链接,有Vue2和Vue3的,dev_tools 以Google浏览器为例 点击设置(就是那三个点)->扩展程序->管理扩…

游戏服务端性能测试

导语:近期经历了一系列的性能测试,涵盖了Web服务器和游戏服务器的领域。在这篇文章中,我将会对游戏服务端所做的测试进行详细整理和记录。需要注意的是,本文着重于记录,而并非深入的编程讨论。在这里,我将与…

C# Windows登录界面进行截图,控制鼠标键盘等操作实现(一)

首先常规的账户进程是没办法获取登录界面的信息的,因为登录界面已经不在某个账户下了,登录界面显示了每一个账户的切换。所以得使用System权限的进程。 那么Windows系统究竟是怎么将登录界面与用户桌面隔离开的呢?首先先通过一些Windows操作系…

很好的启用window10专业版系统自带的远程桌面

启用window10专业版系统自带的远程桌面 文章目录 启用window10专业版系统自带的远程桌面前言1.找到远程桌面的开关2. 找到“应用”项目3. 打开需要远程操作的电脑远程桌面功能 总结 前言 Windows操作系统作为应用最广泛的个人电脑操作系统,在我们身边几乎随处可见。…

vite初始化vue3项目(配置自动格式化工具与git提交规范工具)

初始化项目 vite构建vue项目还是比较简单的,简单配置选择一下就行了 初始化命令 npm init vuelatest初始化最新版本vue项目 2. 基本选项含义 Add TypeScript 是否添加TSADD JSX是否支持JSXADD Vue Router是否添加Vue Router路由管理工具ADD Pinia 是否添加pinia…

Nginx反向代理配置流式响应

Nginx 是通过缓存响应内容来处理请求的。也就是说,当 Nginx 接收到完整的响应后,才会将其发送给客户端,所以默认不支持流式响应,这里讲讲 Nginx 反向代理中怎么配置流式响应? 一、使用背景 最近使用 Egg.js 搭建自动化…

【腾讯云 TDSQL-C Serverless 产品测评】全面测评TDSQL-C Mysql Serverless

全面测评TDSQL-C Mysql Serverless 文章目录 全面测评TDSQL-C Mysql Serverless前言什么是TDSQL-C Mysql Serverless初始化 TDSQL-C Mysql Serverless新建数据库建立数据表开启外网访问 兼容性SQL文件 导入导出navicat 直接在线传输 构建测试环境准备Python测试脚本准备 Jmeter…

下载安装并使用小乌龟TortoiseGit

1、下载TortoiseGit安装包 官网:Download – TortoiseGit – Windows Shell Interface to Githttps://tortoisegit.org/download/ 2、小乌龟汉化包 在官网的下面就有官方提供的下载包 3、安装

Electron入门,项目运行,只需四步轻松搞定。

electron 简单介绍: 实现:HTML/CSS/JS桌面程序,搭建跨平台桌面应用。 electron 官方文档: [https://electronjs.org/docs] 本文是基于以下2篇文章且自行实践过的,可行性真实有效。 文章1: https://www.cnbl…

Django学习笔记(2)

创建app 属于自动执行了python manage.py 直接在里面运行startapp app01就可以创建app01的项目了 之后在setting.py中注册app01 INSTALLED_APPS ["django.contrib.admin","django.contrib.auth","django.contrib.contenttypes","django.c…

合并jar包导致gradle传递依赖失效

目录 零、背景一、合并jar包1.1、自定义一组jar包1.2、自定义合并jar的任务1.3、定义打包jar的任务 二、发布jar包2.1、未合并jar包之前的合并方式2.2、合并jar包之后的合并方式 三、发现问题3.1、确定gradle中的依赖关系3.2、对比maven是否缺失依赖3.3、对比合并前后的pom.xml…

Source Insight配置Cppcheck做静态测试(Windows)

1.安装cppcheck 先从cppcheck官方网站下载cppcheck的安装包。 注: (1)官网地址:https://sourceforge.net/projects/cppcheck (2)截止2023年8月,官方发布的最新版本是cppcheck-2.11-x64-Setup.…

子集-回溯方法

class Solution {//题解思路//LinkedList<Integer> path new LinkedList<>(); List<List<Integer>> results new ArrayList<>();public List<List<Integer>> subsets(int[] nums) {//主方法中调用方法同时传入指定的参数初始值bac…