当前位置: 首页 > news >正文

代码分支管理规范

Git Flow

在使用 Git 的过程中如果没有清晰流程和规划,否则,每个人都提交一堆杂乱无章的 commit,项
目很快就会变得难以协调和维护。
Git 版本管理同样需要一个清晰的流程和规范,Vincent Driessen 为了解决这个问题提出了 A
Successful Git Branching Model

Git Flow 流程图:

在这里插入图片描述

分支管理规范

  • master/develop 分支:所有在 master 分支上的 Commit 应该打上 Tag,一般情况下 master 不存在 Commit
  • develop 分支:develop 分支基于 master 分支创建,feature 分支做完后,必须合并回 develop 分支。由develop再合并到master分支
  • test 分支:测试环境分支代码,功能开发完成后部署测试,需要定期从master上进行代码同步
  • feature 分支:feature 分支做完后,必须合并回 develop 分支, 合并完分支后一般会删点这个 feature 分支,在需求有依赖的前提下,feature分支可以基于其他需求的feature分支创建
  • hotfix 分支:hotfix 分支基于 master 分支创建,hotfix分支也是一个feature分支,只不过可以直接合并到master,开发完后需要合并回 master ,同时在master 上打一个 tag。如果没有合并到develop 分支,则需要将master和develop代码同步

代码开发

  • 每位开发人员认领自己的功能需求,分别从 master 分支拉取自己个人分支进行功能编码。敏捷开发强调功能小版本迭代,并行开发。
  • 当研发人员每个 feature 分支完成,开发自测和测试人员完成测试之后,提交 merge request,team leader 经过 code review 确定运行无缺陷后合并到 develop 分支。
  • 此时测试人员需要从 develop 分支打包最新代码,并部署集成测试环境,同步进行功能、接口测试与其他系统的交互测试。

分支代码管理

  • master 分支的每一次更新,都建议打 tag 添加标签,通常为对应版本号,便于管理
  • feature分支、hotfix分支在合并后可以删除,避免分支过多管理混乱
  • 每次 pull 代码前,提交本地代码到本地库中,否则可能回出现合并代码出错,导致代码丢失

冲突的场景及解决方案如下

  • 多 feature 分支并行开发,在提交测试合并至 develop 分支时,容易出现合并冲突。这就要求各研发人员尽量只修改个人功能代码文件。公共配置或公共依赖包应由单独开发人员维护,按需添加,修改合并后推送到各 feature 分支。
  • Hotfix 分支修复的同时有 release 分支功能需要发版上线,合并 master 时容易出现合并冲突。这时按功能生产环境紧急性依次发布上线,发版上线后立即合并 master 并合并到develop分支

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 远程桌面管理软件,如何使用远程桌面管理软件来远程控制服务器
  • C++:类和对象(上)
  • sysinternals工具包
  • 《Nginx核心技术》第08章:为Nginx动态添加模块
  • 第6章>>实验7:PS(ARM)端Linux RT与PL端FPGA之间(通过Memory存储器进行通信和交互)《LabVIEW ZYNQ FPGA宝典》
  • Android SurfaceFlinger——信号同步原理(五十一)
  • 探索WebKit的奥秘:塑造高效、兼容的现代网页应用
  • maxscript循环中提高性能
  • 记一次对加密后pythonEXP的解密以及分析
  • SS9283403 sqlite3交叉编译并部署到SS928(六)
  • Together规则引擎 金融解决方案
  • 八股文”在实际工作中的作用:敲门砖还是空谈?
  • supermap制作发布二三维地图服务
  • 基于企业微信第三方接口开发,发送朋友圈评论
  • MySQL:数据库权限与角色
  • 345-反转字符串中的元音字母
  • Angularjs之国际化
  • java8-模拟hadoop
  • Java应用性能调优
  • JS 面试题总结
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • node学习系列之简单文件上传
  • oschina
  • redis学习笔记(三):列表、集合、有序集合
  • Swift 中的尾递归和蹦床
  • Terraform入门 - 3. 变更基础设施
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 给github项目添加CI badge
  • 力扣(LeetCode)21
  • 微服务核心架构梳理
  • 我感觉这是史上最牛的防sql注入方法类
  • 一、python与pycharm的安装
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • MyCAT水平分库
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • #Java第九次作业--输入输出流和文件操作
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #如何使用 Qt 5.6 在 Android 上启用 NFC
  • (1)Hilt的基本概念和使用
  • (70min)字节暑假实习二面(已挂)
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (Matlab)使用竞争神经网络实现数据聚类
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • **python多态
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET 分布式技术比较
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调