Gitflow工作流
- 就像写代码需要代码规范一样,代码管理同样需要一个清晰的流程和规范
- 官方地址:https://nvie.com/posts/a-successful-git-branching-model/
准备阶段
- 初始化远程工作区和共享版本库
git init --bare
项目经理初始化项目,并在master分支定制标记
添加初始化文件
git add .
git commit -m
git push
git tag v0.1
git push origin v0.1
- 项目经理基于master分支创建
develop
分支
git switch master
git branch Develop
git switch Develop
git push
- 项目经理给开发人员分配工作任务
开发阶段
- 开发人员基于
develop
分支创建功能分支
git branch feature/home
git switch feature/login
- 开发人员在自己的分支上
add commit push
- 开发完成告诉项目经理,由项目经理审核代码并合并代码到
develop
git pull
- 检查代码
git switch feature/home
- 没有问题项目经理会切换到Develop分支中将你的功能分支代码合并到Develop中
git switch Develop
git merge feature/home
检查代码
git switch feature/login
- 没有问题项目经理会切换到Develop分支中将你的功能分支代码合并到Develop中
git switch Develop
git merge feature/login
准备上线阶段
- 项目经理基于
develop
分支创建release
分支
git switch Develop
git branch Release/v1.0
- 测试人员获取
release
分支代码进行测试- 发现
bug
由开发人员基于release
分支创建bugfix
分支进行修复
git pull
git switch Release/v1.0
git branch bugfix/issue32
- 修复 bug / add / commit
- 修复完成后重新合并到
release
分支
git switch Release/v1.0
git merge bugfix/issue32
git push
- 将测试和修复完所有bug的最终代码合并到
master
分支和develop
分支
git switch Develop
git merge Release/v1.0
git switch master
git merge Release/v1.0
项目上线
- 项目经理在master分支定制标记
git switch master
git tag -a v1.0 -m"项目第一次上线"
- 项目经理将标记的版本提交到远程服务器
git push origin v1.0
上线之后
- 项目上线后发现紧急bug
- 基于master分支创建
hotfix
分支,在该分支上修复bug
git switch master
git branch hotfix/issue66
- 修复 bug / add / commit
- 修复完成后重新合并到master分支和develop分支
git switch Develop
git merge hotfix/issue66
git switch master
git merge hotfix/issue66
- 项目经理重新在master分支定制标记
git tag v1.1
git push origin v1.1
Git经典协同模型
- 中心仓库:包含master和develop两个分支
- 分支分类
- 主要分支:master和develop分支
- 支持性分支:特性分支,发布分支,热补丁分支
- 对于
商业级
项目,真正开发过程中都是基于develop分支进行的,develop分支是开发主线!- master分支中,只存放相对稳定的分支,例如:0.1版本, 0.2版本
- 在实际产品开发中,需要
规划版本
,例如:将100个功能规划到5个不同的版本上- 发现bug,要基于
上一个最稳定的版本
进行修复,这是热补丁
分支存在的意义!- 理解清楚版本管理分支的特性,是迭代式开发的重要基础!
git branch
:查看所有分支git branch 分支名称
:创建分支
- 新创建的分支中的内容和master分支中的内容一样,这还是得要看你是从那个分支中创建的,从那个分支中创建的内容就是那个分支当中的
git checkout 分支名称
:切换到指定分支git merge 分支名称
:合并分支
- 将当前所在分支和指定名称分支进行合并,只是内容合并,分支任然还在
git branch -d 分支名称
:删除指定分支
- 不能在当前分支中删除自己
总结
- master 主分支
- 负责记录上线版本的迭代,该分支代码与线上代码是完全一致的
- develop 开发分支
- 该分支记录相对稳定的版本,所有的
feature
分支都从该分支创建- feature/* 特性(功能)分支
- 用于开发新的功能,不同的功能创建不同的功能分支,功能分支开发完成并自测通过之后,需要合并到
develop
分支- release/* 发布分支
- 用于代码上线准备,该分支从
develop
分支创建,创建之后由测试发布到测试环境进行测试,测试过程中发现bug需要开发人员在该release分支上进行bug修复,所有bug修复完后,在上线之前,需要合并该release分支到master分支和develop分支- bugfix/* bug修复分支
- 用于修复不紧急的bug,普通bug均需要创建bugfix分支开发,开发完成自测没问题后合并到 develop 分支后,删除该分支
- hotfix/* 紧急bug修复分支
- 该分支只有在紧急情况下使用,从
master
分支创建,用于紧急修复线上bug,修复完成后,需要合并该分支到master分支以便上线,同时需要再合并到develop分支