尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Git Flow 工作流实践

Git Flow 工作流实践 目录前置知识Gitflow 简介什么是 GitflowGitflow 的作用Gitflow 核心分支结构Gitflow 流程实践流程概述Gitflow 架构图Gitflow 工作流程图前置知识本文将假设你已经掌握了 Git 的基本使用方式。如果你还没有掌握 Git 的基本使用方式本文或许不适合你你应该先掌握学习 Git这对后续的学习很重要。你可以在这里学习它。Gitflow 简介什么是 GitflowGitflow 是一种非常经典的分支管理和发布模型它最初由 Vincent Driessen 在 nvie 发布并广受欢迎。它特别适合管理有固定发布周期以及需要并行开发多个功能及需要长期维护多个版本的项目。Gitflow 的作用Gitflow 的核心思想是利用严格的分支模型为不同的开发任务分配独立的分支使得开发过程更加结构化、井井有条。它定义了主要分支和辅助分支并规定了它们之间的交互协作方式。它是一个非常强大和系统的流程特别适合有固定发布周期以及版本维护需求明确的中大型项目在选择提交工作流时应根据团队规模和项目特点来决定是否采用。Gitflow 核心分支结构长期分支main 主分支作用存放稳定可随时部署到生产环境可运行的代码分支的每一个提交都对应一个正式的发布版本不允许在此分支上直接开发每一个发布版本会打上tag 标签如v0.0.1develop 开发分支作用用来集成最新开发成果的集成分支日常开发的功能最终都会集成到这个分支上是功能开发的集线器。当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-mfeat(auth): 添加用户登录接口gitcommit-mfeat(auth): 实现 JWT 令牌生成gitcommit-mtest(auth): 添加认证模块单元测试定期同步上游 develop 分支的更新# 避免合并时产生大量冲突gitfetch origin#下载远程仓库所有最新的提交但不合并。它只会更新本地的远程跟踪分支gitrebase origin/develop#变基将当前工作区更改应用到最新版的 develop 分支基线Gitflow 架构图maindevelopfeaturereleasehotfix项目初始化创建功能分支开始功能开发完成新功能新功能合并新功能持续开发进入发布准备完成版本测试正式发布 v1.0.0同步发布代码进入下一轮开发线上运行线上出现BUG完成紧急修复紧急修复上线v1.0.1同步修复代码开始下一轮开发Gitflow 工作流程图⚡ 临时特性分支 长期常驻分支 线上故障拉出修复✅ 合并修复 新增Tag⬇️ 拉取 / 更新上游 main 拉取功能分支 开发完成合并 拉取预发布分支✔️ 预发稳定后合并main生产环境 | 稳定可上线 | 打版本Tagdevelop开发集成总分支 | 最新功能合集hotfix/vX.Y.Z线上紧急故障修复feature/*单个新功能点开发release/vX.Y.Z版本预发布‍♂️ 博主座右铭向阳而生我还在路上——————————————————————————————博主想说将持续性为社区输出自己的资源同时也见证自己的进步——————————————————————————————‍♂️ 如果都看到这了博主希望留下你的足迹【收藏点赞✍️评论】——————————————————————————————
返回列表