目录
- 前置知识
- Gitflow 简介
- 什么是 Gitflow?
- Gitflow 的作用
- Gitflow 核心分支结构
- Gitflow 流程实践
- 流程概述
- Gitflow 架构图
- Gitflow 工作流程图
前置知识
本文将假设你已经掌握了 Git 的基本使用方式。如果你还没有掌握 Git 的基本使用方式,本文或许不适合你,你应该先掌握学习 Git,这对后续的学习很重要。你可以在这里学习它。
Gitflow 简介
什么是 Gitflow?
Gitflow 是一种非常经典的
分支管理和发布模型,它最初由 Vincent Driessen 在 nvie 发布并广受欢迎。它特别适合管理有固定发布周期,以及需要并行开发多个功能,及需要长期维护多个版本的项目。
Gitflow 的作用
Gitflow 的核心思想是利用
严格的分支模型,为不同的开发任务分配独立的分支,使得开发过程更加结构化、井井有条。它定义了主要分支和辅助分支并规定了它们之间的交互协作方式。它是一个非常强大和系统的流程,特别适合有固定发布周期,以及版本维护需求明确的中大型项目,在选择提交工作流时,应根据团队规模和项目特点来决定是否采用。
Gitflow 核心分支结构
长期分支
main 主分支:作用:存放稳定,可随时部署到生产环境可运行的代码- 分支的每一个提交,都对应一个正式的发布版本
不允许在此分支上直接开发- 每一个发布版本会打上
tag 标签,如:v0.0.1
develop 开发分支:作用:用来集成最新开发成果的集成分支,日常开发的功能最终都会集成到这个分支上,是功能开发的集线器。- 当
develop 分支的功能达到稳定并准备发布时,会合并到release 分支进行预发布测试 - 所有
功能分支 (feature )和发布分支(release )都基于develop 分支拉取出来
- 当
临时分支
功能分支 feature/*:用于开发单个新功能。从develop 分支拉出,完成后合并回develop 分支。合并后该功能分支通常将会被被删除掉,以结束这个功能点的开发。发布分支 release/*: 为发布新版本做准备,不再添加新功能。可用作部署内部预发测试服。基于develop 分支最新提交拉出,当预发布分支也足够稳定后,会将此分支合并到 main 主分支。合并结束后,如果没有被用作测试服持续运行,可选择删除。最后 develop 会再次拉取上游 main 主分支进行同步到最新热修复分支 hotfix/*:用于紧急修复生产环境中发现的Bug。从main 主分支拉出,修复完成后合并回 main 分支,并需要重新打上tag标签发布修复。最后develop 开发总分支会再次拉取上游 main 主分支进行同步修复内容。
Gitflow 流程实践
流程概述
初始新项目通常至少会具备一个远程 main 主分支,以及一个 develop 开发总集成分支。这两个分支一般由团队负责人建好。业务开发人员无需关心,就算没有 develop 开发总集成分支,那么至少也会有一个 main 主分支。后续的功能开发,都是围绕着这两个分支操作。main 主分支存储官方版本历史记录,develop 开发分支充当功能的集成分支。
- 第一步:是创建 develop 开发分支来补充默认的 main 主分支。一个简单的方法是让一个开发人员在本地创建一个空的 develop 分支并将其推送到服务器,此时两个分支内容是完全保持同步的。(
如果远程默认团队负责人配置好了 develop 开发总集成分支,此步骤可以跳过):
gitbranch develop# 创建 develop 分支gitswitch develop||gitswitch-cdevelop#切换到 develop 分支gitpush-uorigin develop#将 develop 分支同步推送到远程- 第二步:feature 分支。feature 分支不是从 main 分支中分支,而是使用 develop 作为其父分支。一个 feature 完成后,就会合并回 develop 中。
feature 不应直接与 main 交互。feature 分支通常是在最新的 develop 分支基础上创建的。
gitswitchdevelop//确保在最新的 develop 分支上,作为基线gitswitch-c feature/login//创建并切换 feature/login 功能分支在功能分支上进行开发
# 编写代码,多次提交gitadd.gitcommit-m"feat(auth): 添加用户登录接口"gitcommit-m"feat(auth): 实现 JWT 令牌生成"gitcommit-m"test(auth): 添加认证模块单元测试"定期同步上游 develop 分支的更新
# 避免合并时产生大量冲突gitfetch origin#下载远程仓库所有最新的提交,但不合并。它只会更新本地的远程跟踪分支gitrebase origin/develop#变基,将当前工作区更改应用到最新版的 develop 分支基线Gitflow 架构图
Gitflow 工作流程图
🚵♂️ 博主座右铭:向阳而生,我还在路上!
——————————————————————————————
🚴博主想说:将持续性为社区输出自己的资源,同时也见证自己的进步!
——————————————————————————————
🤼♂️ 如果都看到这了,博主希望留下你的足迹!【📂收藏!👍点赞!✍️评论!】
——————————————————————————————