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

001、Git开发流程规范

前言

本篇不详细介绍 Git 的使用,仅介绍基于 Git 的开发分支流程规范。

简述

Git 管理中,最重要的一个点就在于分支的管理。在项目开发中,一般涉及到 Git 的相关分支有:

master/main: 主分支,版本正式发布的代码都用这个分支的代码进行编译,常设置为受保护的分支。
dev/develop: 开发分支,开发环境基于此分支进行构建。
feature-: 开发某个特定功能的分支。
hotfix-/fix-: bug 修复分支。
release-: 测试平台用。
对于比较小型的项目,参与人较少时,可以仅保留 master, develop 分支。

这里只是一个常规的项目的分支管理,仅作借鉴,具体情况需具体分析。

实际情况

本人目前开发一个项目,代码是由我一个人写的,在进行短期迭代中。

每天就是基于 develop 分支进行代码编写,功能写完后直接提交至 develop 分支进行测试环境的搭建,提交测试,有问题了直接修改提交至 develop 分支,即 develop 分支上的代码就是测试环境所用的代码

迭代结束,将 develop 分支合并至 master, 并打上正式版的 tag。
在这里插入图片描述

开发流程

  1. 从 develop 分支拉出一个新分支(feature-/fix-)。
  2. 开发完成,提交分支至远程仓库。
  3. 创建合并请求(merge request,feature-* -> develop),请求项目管理人去进行代码审查并合并分支至 develop。
  4. 测试通过后,将 develop 分支合并至 master 分支,并打上相应的 tag,一般为正式版本号。

项目每一个版本,都会重复上述流程。

问题 && 解决

迭代过程中(1.1),发现了上一个正式版(1.0)发布,有重大的 bug 需要修复,比较紧急,但是当前 develop 分支更改了很多 1.1 版本的功能,还没有测试完成,不能直接根据当前的 develop 分支进行修改。
还好之前发布 1.0 版本时将当时 develop 分支的代码合并到了 master 分支,现在只需要从 master 分支上拉取代码进行修改,再将修改的内容合并到 master 进行发布即可。这里要注意之后再开发 develop 分支的时候,要先拉取一下 master 的代码进行合并,有冲突就修改,保证下次从 develop 分支再合并到 master 的时候不会有冲突。

总结

  • Git 的流程设计还是很棒的,熟悉了之后是可以方便的进行联合开发工作,建议多花些时间了解。
  • 对于不同规模,不同场景下的项目,Git 的工作流是可以自行更改优化的,最终的目的就是方便、快速、准确的构建项目体系。

本篇主要讲述了一个迭代过程中,突遇线上紧急 bug 需要修复时的 git 工作流的设计,即保证线上的环境用的始终是 master 分支的代码:

  1. 从 master 检出新的分支并进行修改。
  2. 将修改后的代码合并到 master 分支,并编译发布,打 tag。
  3. 将修改后的 master 分支合并到当前开发的 develop 分支,解决冲突。
  4. 正常的开发流程。

http://www.kler.cn/news/310515.html

相关文章:

  • 探索pytorch数据集中Mnist数据集的数据格式
  • 深入剖析Docker容器安全:挑战与应对策略
  • 用Mapmost聚类图分析世界
  • python 实现eulers totient欧拉方程算法
  • 尤雨溪推荐的拖拽插件,支持Vue2/Vue3 VueDraggablePlus
  • 免费开源微信机器人 教程/文档/开发
  • 828 华为云征文|华为 Flexus 云服务器部署 RustDesk Server,打造自己的远程桌面服务器
  • WAAP解决方案:守护数字时代的安全盾牌
  • 从底层原理上解释clickhouse查询为什么快
  • istio中如何使用serviceentry引入外部服务
  • MySQL常用语句(一)
  • 【w0网页制作】Html+Css网页制作影视主题之庆余年Ⅱ含轮播表单(5页面附源码)
  • Android Room 数据库自动升级与迁移策略
  • 探索IT行业的无限潜力:技术、发展与职业前景
  • python 2024-9
  • 拓扑排序基础
  • Java项目实战II基于Java+Spring Boot+MySQL的大学城水电管理系统(源码+数据库+文档)
  • Kafka性质小结
  • 学习使用SQL Server Management Studio (SSMS)
  • 计算机毕业设计 办公用品管理系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
  • 期货量化跟单系统演示
  • Leetcode Hot 100刷题记录 -Day17(搜索二维矩阵II)
  • 如何在Windows系统上使用谷歌浏览器进行远程工作
  • 51单片机按键数码管(简单设计)
  • Matlab对状态机建模的方法
  • 【C++】猜数字小游戏
  • 什么是 PHP? 为什么用 PHP? 有谁在用 PHP?
  • 【机器学习导引】ch2-模型评估与选择
  • Spring6梳理9—— 依赖注入之注入对象类型属性
  • array和linked list的区别