Git Flow 工作流实践
2026/9/13 21:21:52 网站建设 项目流程

目录

  • 前置知识
  • 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 架构图

maindevelopfeaturereleasehotfix项目初始化创建功能分支开始功能开发完成新功能新功能合并新功能持续开发进入发布准备完成版本测试正式发布 v1.0.0同步发布代码进入下一轮开发线上运行线上出现BUG完成紧急修复紧急修复上线v1.0.1同步修复代码开始下一轮开发

Gitflow 工作流程图

⚡ 临时特性分支

📌 长期常驻分支

🔴 线上故障拉出修复

✅ 合并修复 + 新增Tag

⬇️ 拉取 / 更新上游 main

🌱 拉取功能分支

📦 开发完成合并

🚀 拉取预发布分支

✔️ 预发稳定后合并

main
生产环境 | 稳定可上线 | 打版本Tag

develop
开发集成总分支 | 最新功能合集

hotfix/vX.Y.Z
线上紧急故障修复

feature/*
单个新功能点开发

release/vX.Y.Z
版本预发布


🚵‍♂️ 博主座右铭:向阳而生,我还在路上!
——————————————————————————————
🚴博主想说:将持续性为社区输出自己的资源,同时也见证自己的进步!
——————————————————————————————
🤼‍♂️ 如果都看到这了,博主希望留下你的足迹!【📂收藏!👍点赞!✍️评论!】
——————————————————————————————

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询