从一个前端项目实践 Git flow 的流程与参考
Git flow 出自 A successful Git branching model,这里使用了一个前端项目配合本文稿实施了 git flow 并记录流程作出示例和参考,对 hotfix 与持续部署略有提及,本意是用作公司内部的技术安利。
所用源码及文档本身见于 github jusfr/HelloGitflow
前言
Gitflow 是一种 git 分支管理工具——说是思想也不为过,它使用既定策略区分和管理开发、测试、生产环境的代码版本,对测试与持续集成友好,与敏捷、迭代的思路一致。
1 准备工作
1.1 创建空白目录
mkdir HelloGitflow
cd HelloGitflow
1.2 开始当前目录工作,示例创建和保存一个 index.html
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<div></div>
</body>
</html>
git add index.html
git commit -m "init commit"
2 Git flow init
git flow init
这里使用了默认配置,一路 next
3 一个完整的开发周期
3.1 任务拆解,示例添加了分支 about 和 navigation
git flow feature start about
git flow feature start navigation
任务拆解相当于 story 认领,实际开发中的步骤更加繁冗。
3.2.1 about 分支创建了一个 about.html
git checkout feature/about
# more work to do
git add about.html
git commit -m "add about.html"
3.2.2 navigation 分支创建了一个 nav.html
git checkout feature/navigation
# more work to do
git add nav.html
git commit -m "add nav.html"
3.3 开始合并分支
3.3.1 合并 about
git flow feature finish about
3.3.2 合并 navigation,存在 merge 过程
git flow feature finish navigation
3.4 版本发布
3.4.1 当 feature 积累数量达到可以进行版本发布时,开始进行 release 发布
git flow release start v0.1
3.4.2 部分内容需要修改,在这里为各页面添加了 title
git add index.html about.html nav.html
git commit -m "add title for each page"
3.4.3 结束当前 release 分支
# git push
git flow release finish v0.1
4 连续的开发周期
我们开始在远程分支上工作,可以在结束分支前先将其 push 到远程分支上避免未在本地保留的情况
git remote add github https://github.com/jusfr/HelloGitflow.git
git push github --all
虽然开出来很多分支,但是可以观察到 master 和合并了两次,且分别被标记为 v0.1 和 v0.2
不考虑测试等情况,标记 v0.1 和 v0.2 的 master 版本或者 release/v0.1 和 release/v0.2 都是可以部署的版本。
5 线上的 bug 修复
现在已经在 v0.2 基础上进行 account 和 react 的分支开发,但是发现线上的 v0.2 版本需要立即修复的问题,分支状态
开启 hotfix/v0.2.1 来修复这个问题
git flow hotfix start v0.2.1
在 hotfix/v0.2.1 的视角来看,它是从最近的 mater 分支checkout 下来的,所以对正在进行的 account 和 react 无影响
以全局视角来看,hotfix/v0.2.1 与 account 和 react 确实没有交集
现在问题修复,合并 hotfix/v0.2.1
git flow hotfix finish 'v0.2.1'
当然仍然可以先 push 到远程分支,可以看到进行了若干步操作
- 合并 hotfix/v0.2.1 到 master 分支,master 分支被打上 v0.2.1 的 tag
- 合并 master 到 develop 分支。
在第2步中,如果 develop 有过变更,比如有过 feature 合并,那么可能存在冲突需要解决
在此示例中, master 分别被打上了 v0.1, v0.2, v0.2.1 标记,这对基于 master 的持续部署非常友好:可以快速在这些版本中部署与回滚,而不用关心存在多少变更与分支等等。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!