【软件开发规范篇】Git分支使用规范

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是,产生了写一个博客专栏想法,介绍当前互联网企业JAVA项目开发如何快速入门。

本文收录于《30天企业JAVA项目开发实战入门》专栏,该专栏内容以当前互联网软件企业中的项目实战为线索,介绍企业JAVA项目开发中涉及到的开发流程、技术、工具、规范要求等等。帮助想从事JAVA开发的大学生或新人,更快的、更好的入门JAVA后端开发工作。

文章目录

    • 一、前言
    • 二、分支命名管理
    • 三、分支操作流程
    • 四、总结

一、前言

本文介绍一下软件开发过程中,Git分支使用规范。

在团队开发中,遵循一个合理、清晰的 Git 使用流程,是非常重要的。否则,各种不清晰的分支结构,后续产品迭代或维护都会让人很头疼。

几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。

有人把 Git 的分支模型称为它的“必杀技特性”,因为基于指针的实现使其足够轻量。

Git 鼓励在工作流程中频繁地使用分支与合并,哪怕一天之内进行许多次,但仍要遵循一定的规范。

Git工作流程图:
在这里插入图片描述

二、分支命名管理

开发过程主要存在以下分支:

  • master
  • dev
  • hotfix-[问题名称 | bug编号]
  • feature-yyyyMMdd_需求名称
  • bugfix-[bug编号]
  • refactor-[重构名称]

master

- master主分支始终保持稳定的可发布版本,所以一般不允许直接在该分支上修改代码;
- 只有项目组主程才拥有master主分支的管理权限(例如其他分支合并到master必须由主程操作);

dev

- dev为开发分支,要能保证能运行, 不能编译错误;
- 始终保持最新完成以及bug修复后的代码;
- 一般开发新功能时,feature 分支都是基于 develop分支下创建的;

hotfix

- 建议格式为hotfix-[问题名称 | bug编号];
- 线上出现紧急问题时,需要及时修复,以 master 分支为基线,创建 hotfix 分支,修复完成后,需要合并到master 分支和 dev 分支;

feature

- 建议格式为feature_yyyyMMdd_需求名;
- 开发新功能时,以dev分支为基础创建 feature 分支;
- 如果有codereview, 应由一人审核后合并至dev;

bugfix

- 建议格式为bugfix-[bug编号];
- 从dev分支创建,用于修改测试提出的bug,修复以后,在远程发起向dev分支的合并请求,合并以后删除该分支;

refactor

- 建议格式为refactor-[重构名称];
- 从dev分支创建,用于代码的**重大规模重构**(小规模重构创建feature分支即可);
- 重构以后,必须经过严格测试通过,才能向dev分支合并;

三、分支操作流程

  1. 需求分类(中长期需求, 跨版本需求等);
  2. 由专人按统一的命名格式, 切分支;
  3. 各人拉取各自分支开发;
  4. 开发完后, 提交代码
    (1)若有codeview, 由专人浏览后合并到dev;
    (2)若没有, 则自行同步dev上的最新代码到本分支, 然后合并本分支代码到dev(规避代码覆盖问题);
  5. 分支开发的时间过久, 则需要定时拉取dev分支到自己业务分支上, 减少后续解决冲突的工作量;
  6. 如果测试过程中存在 bug 需要修复,则由开发者在dev上拉取bugfix分支修改bug,完成后合并到dev分
    支上;
  7. dev分支的代码测试没有问题, 合并到master, master分支打好tag或做好备份, 通知运维准备上线;
  8. 若开发中突遇紧急bug, 需从master上拉取最新代码到本地称为hotfix分支, 改完测试后合并到master分支,通知运维发布。

四、总结

以上规范不一定是必须的,一般是根据实际情况来的,总结如下:

  • 自己的分支一定要自测,切记不要提交后,影响到其他代码,更别说别人拉下代码还报错这种低级错误;
  • 本地分支要做到勤提交,分小功能提交,一次提交一大堆各种功能的做法也要杜绝;
  • 每天第一件事就是更新 develop 分支内容到本地分支,避免大规模 merge,太容易出错了;
  • 迭代新版本时,一定要保证当前开发分支和线上分支一样;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

windows驱动开发-中断(一)

中断是windows中最难的一部分,这是因为中断本身属于操作系统的一部分,理解了中断和内存,对整个系统也就了解了。 中断部分会先从中断优先级、中断处理、中断服务例程入手,大概讲述一下中断的概念;接着从中断的一般实现…

springboot 集成 activemq

文章目录 一:说明二:e-car项目配置1 引入activemq依赖2 application启动类配置消息监听3 application.yml配置4 MQConfig.java 配置类5 ecar 项目中的监听6 junit 发送消息 三:tcm-chatgpt项目配置5 MQListener.java 监听消息 三 测试启动act…

Docker② —— Cgroups详解

1. 概述 Cgroups 的全称是control groups,cgroups为每种可以控制的资源定义了一个子系统。Cgroups分为三个部分: cgroup 本身:对进程进行分组hierarchy:将 cgroup 形成树形结构subsystem:真正起到限制作用的部组件 cp…

【vscode】2024最新!vscode云端配置同步方案:code settings sync

小tian最近对电脑进行了系统重装,结果vscode相关配置和插件都没有保存记录,还好公司电脑里还有。痛定思痛,决定写一篇vscode云端同步配置方案,以作记录和分享~ 步骤一:安装vscode插件:code settings sync …

云贝餐饮连锁V2-2.9.9源码

云贝餐饮连锁V2独立版、版本更新至2.9.9,小程序、公众号版本,全插件,公众号小程序端,独立版; 带商家端,修复收银台、排队点餐、堂食点餐;最新版更新 搭建环境教程: 系统环境:CentO…

【04】JAVASE-循环语句【从零开始学JAVA】

Java零基础系列课程-JavaSE基础篇 Lecture:波哥 Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机,Java 仍是企业和开发人员的首选开发平台。…

算法学习笔记Day9——动态规划基础篇

一、介绍 本文解决几个问题:动态规划是什么?解决动态规划问题有什么技巧?如何学习动态规划? 1. 动态规划问题的一般形式就是求最值。动态规划其实是运筹学的一种最优化方法,只不过在计算机问题上应用比较多&#xff…

微信小程序小游戏开发,微信开发者工具提示该目录下的项目(wxapp2)已在工具中创建,怎么办

微信小程序小游戏开发,微信开发者工具提示该目录下的项目(wxapp2)已在工具中创建,怎么办 情况描述, 导入一个项目的时候,导入成了小游戏项目了 想换成小游戏项目,变不了了,提示 “…

未来已来:解锁AGI的无限潜能与挑战

未来已来:解锁AGI的无限潜能与挑战 引言 假设你有一天醒来,发现你的智能手机不仅提醒你今天的日程,还把你昨晚做的那个奇怪的梦解释了一番,并建议你可能需要减少咖啡摄入量——这不是科幻电影的情节,而是人工通用智能…

解决Milvus官网提供的单机版docker容器无法启动,以及其它容器进程与Milvus容器通信实现方案【Milvus】【pymilvus】【Docker】

文章目录 问题预备知识方案获取pymilvus获取milvus 实例多容器通信 问题 我的需求是做混合检索单机版可以满足,要走Docker容器部署,还需要和另一个容器中的程序做通信。官方文档提供的Milvus安装启动Milvus方案,见文档:传送门 我…

wlan二层直连组网实验(ensp)

目录 1. VLAN 端口类型及参数设计2. IP 地址规划3. WLAN数据规划(1) DHCP服务器配置(2) AC 源接口地址、认证方式配置(3) AP 组的创建(4) 创建域管理模板、国家码认证(5) 创建安全模板(6) 创建SSID模板(7) 创建VAP模板(8) AP组绑定模板(9) 查看: 1. VLAN 端口类型及…

以太网LAN双向透明传输CH9120透传芯片实现以太网转232串口转485转TTL串口

网络串口透传芯片 CH9120 1、概述 CH9120 是一款网络串口透传芯片。CH9120 内部集成 TCP/IP 协议栈,可实现网络数据包和串口数据的双向透明传输,具有 TCP CLIENT、TCP SERVER、UDP CLIENT 、UDP SERVER 4 种工作模式,串口波特率最高可支持到…

03 Docker入门Dockerfile详解及镜像创建

1.1 使用 Dockerfile 构建镜像 新建一个 Dockerfile 文件vi Dockerfile 将下面的内容复制粘贴进去:## Base Images ## 从天池基础镜像构建(from的base img 根据自己的需要更换,建议使用天池open list镜像链接:https://tianchi.aliyun.com/forum/postDetail?postId=67720) F…

【Unity动画系统】动画状态基本属性与相关API、IK简单概述

动画状态基本属性与相关API Tag:判断是否当前播放着相对应Tag的动画,如果是,那么玩家的输入就是无效的。 using UnityEngine.InputSystem;public AnimatorStateInfo stateInfo;void State(){//stateInfo animator.GetCurrentAnimatorStateIn…

AcrelEMS-MH民航机场智慧能源管平台解决方案【可靠供电/降低能耗/高效运维】

民航机场行业背景 自2012年以来,我国民航运输规模出现了显著增长,旅客运输量:从2012年的3.19亿人次上升至2019年的6.6亿人次(注:为剔除疫情影响,此处采取疫情前2019年的数据,下同)&…

数据结构七:线性表之链式栈的设计

在上篇博客,学习了用数组实现链的顺序存储结构,那是否存在用单链表实现栈的链式存储结构,答案是当然的,相比于顺序栈,用数组实现的栈效率很高,但若同时使用多个栈,顺序栈将浪费很多空间。用单链…

用NuGet安装 Oracle ODP.NET

oracle官网原文:Using NuGet to Install and Configure Oracle Data Provider for .NET Using NuGet to Install and Configure Oracle Data Provider for .NET In this section, you will install ODP.NET NuGet packages from nuget.org. Select View > Solut…

PDF 正确指定页码挂载书签后,书签页码对不上

这个问题与我的另一篇中方法一样 如何让一个大几千页的打开巨慢的 PDF 秒开-CSDN博客 https://blog.csdn.net/u013669912/article/details/138166922 另做一篇原因是一篇文章附带一个与该文章主题不相关的问题时,不利于被遇到该问题的人快速搜索发现以解决其遇到的…

8_手眼标定总结_auboi5机械臂与海康平面相机

经过不断地学习与调试,不断地学习网络上其他同志分享的资料,opencv手眼标定迎来了阶段性结束。实际测试结果在机械臂坐标系中X方向差5mm左右。 代码参考《https://blog.csdn.net/wanggao_1990/article/details/81435660》 注意事项: ①标定…

AG32 MCU在触摸屏的应用(AGM FPGA/MCU行业应用)

传统的屏驱MCU常见应用于洗衣机、空调、空调面板、仪器仪表等人机交互界面显示场景中,通常是以段码的形式显示设备运转的时间、温度、测量结果等简单运行数据,随着人机交互需求丰富化,智能家居设备、摩托车、电动车等产品也逐步增加了屏幕显示…