来自:新亮笔记

概述

这篇文章分享 Git 分支设计规范,目的是提供给研发人员做参考。

规范是死的,人是活的,希望自己定的规范,不要被打脸。

在说 Git 分支规范之前,先说下在系统开发过程中常用的环境。

简称 全称
DEV Development environment
FAT Feature Acceptance Test environment
UAT User Acceptance Test environment
PRO Production environment
  • DEV 环境:用于开发者调试使用。

  • FAT 环境:功能验收测试环境,用于测试环境下的软件测试者测试使用。

  • UAT 环境:用户验收测试环境,用于生产环境下的软件测试者测试使用。

  • PRO 环境:就是生产环境。

比如,项目域名为:http://www.abc.com,那么相关环境的域名可这样配置:

  • DEV 环境:本地配置虚拟域名即可

  • FAT 环境:http://fat.abc.com

  • UAT 环境:http://uat.abc.com

  • PRO 环境:http://www.abc.com

接下来,针对不同的环境来设计分支。

分支

分支 名称 环境 可访问
master 主分支 PRO
release 预上线分支 UAT
hotfix 紧急修复分支 DEV
develop 测试分支 FAT
feature 需求开发分支 DEV

master 分支

master 为主分支,用于部署到正式环境(PRO),一般由 releasehotfix  分支合并,任何情况下不允许直接在 master 分支上修改代码。

release 分支

release 为预上线分支,用于部署到预上线环境(UAT),始终保持与 master 分支一致,一般由 develophotfix 分支合并,不建议直接在 release 分支上直接修改代码。

如果在 release 分支测试出问题,需要回归验证 develop 分支看否存在此问题。

hotfix 分支

hotfix 为紧急修复分支,命名规则为 hotfix- 开头。

当线上出现紧急问题需要马上修复时,需要基于 releasemaster 分支创建 hotfix 分支,修复完成后,再合并到 releasedevelop 分支,一旦修复上线,便将其删除。

develop 分支

develop 为测试分支,用于部署到测试环境(FAT),始终保持最新完成以及 bug 修复后的代码,可根据需求大小程度确定是由 feature 分支合并,还是直接在上面开发。

一定是满足测试的代码才能往上面合并或提交。

feature 分支

feature 为需求开发分支,命名规则为 feature- 开头,一旦该需求上线,便将其删除。

这么说可能有点不容易理解,接下来举几个开发场景。

开发场景

新需求加入

有一个订单管理的新需求需要开发,首先要创建一个 feature-order 分支,问题来了,该分支是基于哪个分支创建?

如果 存在 未测试完毕的需求,就基于 master 创建。

如果 不存在 未测试完毕的需求,就基于 develop 创建。

  1. 需求在 feature-order 分支开发完毕,准备提测时,要先确定 develop 不存在未测试完毕的需求,这时研发人员才能将将代码合并到 develop (测试环境)供测试人员测试。

  2. 测试人员在 develop (测试环境) 测试通过后,研发人员再将代码发布到 release (预上线环境)供测试人员测试。

  3. 测试人员在 release (预上线环境)测试通过后,研发人员再将代码发布到 master (正式环境)供测试人员测试。

  4. 测试人员在 master (正式环境) 测试通过后,研发人员需要删除 feature-order 分支。

普通迭代

有一个订单管理的迭代需求,如果开发工时 < 1d,直接在 develop 开发,如果开发工时 > 1d,那就需要创建分支,在分支上开发。

开发后的提测上线流程 与 新需求加入的流程一致。

修复测试环境 Bug

develop 测试出现了Bug,如果修复工时 < 2h,直接在 develop 修复,如果修复工时 > 2h,需要在分支上修复。

修复后的提测上线流程 与 新需求加入的流程一致。

修改预上线环境 Bug

release 测试出现了Bug,首先要回归下 develop 分支是否同样存在这个问题。

如果存在,修复流程 与 修复测试环境 Bug流程一致。

如果不存在,这种可能性比较少,大部分是数据兼容问题,环境配置问题等。

修改正式环境 Bug

master 测试出现了Bug,首先要回归下 releasedevelop 分支是否同样存在这个问题。

如果存在,修复流程 与 修复测试环境 Bug流程一致。

如果不存在,这种可能性也比较少,大部分是数据兼容问题,环境配置问题等。

紧急修复正式环境 Bug

需求在测试环节未测试出 Bug,上线运行一段时候后出现了 Bug,需要紧急修复的。

我个人理解紧急修复的意思是没时间验证测试环境了,但还是建议验证下预上线环境。

  • 如果 release 分支存在未测试完毕的需求,就基于 master 创建 hotfix-xxx 分支,修复完毕后发布到 master 验证,验证完毕后,将 master 代码合并到 releasedevelop 分支,同时删掉 hotfix-xxx 分支。

  • 如果 release 分支不存在未测试完毕的需求,但 develop 分支存在未测试完毕的需求,就基于 release 创建 hotfix-xxx 分支,修复完毕后发布到 release 验证,后面流程与上线流程一致,验证完毕后,将 master 代码合并到 develop 分支,同时删掉 hotfix-xxx 分支。

  • 如果 releasedevelop 分支都不存在未测试完毕的需求, 就直接在 develop 分支上修复完毕后,发布到 release 验证,后面流程与上线流程一致。

并行提测

在一个项目中并行开发了两个需求,并行提测,但是上线日期不同。

我能想到的两种方案:

  • 再部署一套可供测试人员测试的分支

  • 使用 git cherry-pick “挑拣”提交

对于并行提测,你有好的方案吗?欢迎留言。

Commit 日志规范

提交信息一定要认真填写!

建议参考规范:<type>(scope):<subject>

比如:fix(首页模块):修复弹窗 JS Bug。

type 表示 动作类型,可分为:

  • fix:修复 xxx Bug

  • feat:新增 xxx 功能

  • test:调试 xxx 功能

  • style:变更 xxx 代码格式或注释

  • docs:变更 xxx 文档

  • refactor:重构 xxx 功能或方法

scope 表示 影响范围,可分为:模块、类库、方法等。

subject 表示 简短描述,最好不要超过 60 个字,如果有相关 Bug 的 Jira 号,建议在描述中加上。

小结

暂时就想到这么多,规范这东西不是一成不变的,供参考。

特别推荐一个分享架构+算法的优质内容,还没关注的小伙伴,可以长按关注一下:

长按订阅更多精彩▼如有收获,点个在看,诚挚感谢

Git 分支设计规范相关推荐

  1. Ubuntu14.04 64位上配置终端显示git分支名称

    之前在Ubuntu14.04上在终端上显示git分支名称基本上都使用oh-my-zsh,可以参考 https://blog.csdn.net/fengbingchun/article/details/ ...

  2. git 换行问题_后端必备的 Git 分支开发规范指南

    作者:稻草叔叔来源:https://juejin.im/post/5b4328bbf265da0fa21a6820 Git 是目前最流行的源代码管理工具.为规范开发,保持代码提交记录以及 git 分支 ...

  3. 后端必备 Git 分支开发:规范指南

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! https://www.cnblogs.com/herol ...

  4. php 通过exec 创建git分支失败

    为什么80%的码农都做不了架构师?>>>    今天给我们自己的发布系统增加一个新建分支的功能,操作比较简单,但是使用php执行shell命令的时候总是无法push分支到远程,但是登 ...

  5. git分支指的是_git基础之分支含义

    何谓分支 为了理解 Git 分支的实现方式,我们需要回顾一下 Git 是如何储存数据的.或许你还记得第一章的内容,Git 保存的不是文件差异或者变化量,而只是一系列文件快照. 在 Git 中提交时,会 ...

  6. IDEA如何将git分支代码合并到master

    IDEA如何将git分支代码合并到master 1. 打开默认开发分支(svn_develop) 2. 将远程master分支Checkout as new local brabch  确保代码与远程 ...

  7. git分支指的是_你一定知道的Git分支模型

    原标题:你一定知道的Git分支模型 写在前面 本文不是一篇Git入门指南,也不是 Git命令行使用技巧的讲解,而是谈谈作者在过往工作中使用的几种代码版本管理工具的一些体会,同时重点讲解一下Git的分支 ...

  8. Git使用4:Git分支

    Git 使用1:Git基本命令 https://blog.csdn.net/jiduochou963/article/details/86773455 Git 使用2:Git撤销操作 https:// ...

  9. git用法小结(2)--git分支

    中间隔了老长时间了啊!!呵呵 今天继续. 上次我们已经将远程仓库建立好了,下面我们主要的工作就是在这个远程仓库里使劲的捣鼓. 首先我们会想到的是--建立分支.你能确保自己的改动就是万无一失的吗?不能的 ...

最新文章

  1. vue路由对象($route)参数简介
  2. windows1064安装oracle,在Windows 10系统下安装Oracle 11g数据库
  3. 人机融合智能与深度态势感知
  4. 右值引用 移动构造函数 移动语义
  5. Jmeter BeanShell采样器提取接口响应写入csv文件(四)
  6. lightoj 1236 正整数唯一分解定理
  7. 数据结构上机实践第八周项目3-顺序串算法
  8. poj 3080 Blue Jeans kmp+枚举
  9. Asp.Net 4.0 SEO增强之 UrlRouting
  10. 操作系统原理,多道程序设计,并发环境与并发任务,进程定义,进程控制块PCB,PCB维护的进程数据
  11. 微信小程序使用百度地图的Api
  12. vs code语言模式自动检测设置
  13. 刚体运动学公式_理论力学:运动学
  14. php mysql persistent_PHP API中,MYSQL与MYSQLI的持久连接区别
  15. 湖北农商行计算机类笔试题,2019年湖北农商行笔试入门汇总提前知~
  16. 《第一行代码》 第一章:第一行Android代码
  17. oschina 公司已成立
  18. 英语口语练习四十七之幸福满满的词语
  19. 管理学总论之管理活动、管理思想和古典管理理论
  20. 考研数学高数1-1综合测试-函数及其性质

热门文章

  1. js 去掉地址栏内参数_JS获取网站地址栏URL中的参数值并转换成json对象
  2. c# 无法打开计算机.上的 服务,c# - C#Winform应用程序无法在其他计算机上运行(神秘的启动时) - 堆栈内存溢出...
  3. wincc里c语言long int,WinCC V7.3_C脚本手册.pdf
  4. 我确实不知道如何使用计算机,【图片】从零开始的计算机教程:看不懂我就打死你【红石电路吧】_百度贴吧...
  5. asyncdata 获取参数_载入页面初始数据(asyncData)《 Nuxt.js:异步数据 》
  6. char类型怎么输入 c语言_还没搞懂C语言指针?这里有最详细的纯干货讲解(附代码)...
  7. java中怎样判断余数为3,Java的基础语法(三): 运算符
  8. android socket握手,HttpURLConnection抛出java.net.SocketTimeoutException:在Android 4.1.1中SSL握手超时...
  9. matplotlib安装成功但import失败_统信UOS安装失败,deepinv20.1国产操作系统安装成功...
  10. Java基础-Date类常用方法介绍