五种分支
Git Flow中定义了五种分支,master, develop, feature,release, hotfix。其中master和develop为常驻分支,其他为非常驻分支。
- master:该分支上的代码永远是发布状态,不能在此分支上开发,每合并一个hotfix/release就会打赏一个版本标签。
- develop:该分支上的代码是开发中的最新代码,只做合并,不能直接在该分支上开发。
- feature:用作功能开发,一个新功能会基于develop分支新建一个feature分支,功能开发完毕就会合并到develop上并删除此分支。每次合并到develop之前先pull以下,查找有无冲突。
- release:用作版本发布的预发布分支。开发完一个功能合并到develop后,基于这个develop创建一个release分支,并提交测试,通过测试后,将分支合并到develop和master,并为master分支打上版本号,最后删除此release分支即可。
- hotfix:出现紧急bug,基于master创建一个hotfix分支,修复后再合并到develop和master分支,然后为master分支打上修复后的版本标签,最后删除hotfix分支。
实际使用示例
场景如下:
- 当前版本为:0.9.0
- 需要开发一个新功能
- 开发过程中,有bug需要紧急修复
- 创建常驻分支:develop
git checkout -b develop master- 基于develop分支,创建功能分支
git checkout -b feature/print-hello-world develop- 再功能分支下开发功能
- 紧急修复bug
git stash #暂存工作
git checkout -b hotfix/print-error master #从master创建修复分支
# 修复bug并提交
git checkout develop #切换到develop
git merge --no-ff hotfix/print-error #把hotfix合并到develop分支
git checkout master #切换到master分支
git merge --no-ff hotfix/print-error #把botfix合并到master分支
git tag v0.9.1 -m "fix log bug" #打上标签
git stash pop #恢复工作状态- 继续开发
- 提交代码到功能分支
git commit -a -m "print hello world"- 对功能分支做CR。先push到代码托管平台,然后创建PR,等待CR通过。
- CR通过后,由代码仓库维护者将功能分支合并到develop。
git checkout develop
git merge --no-ff feature/print-hello-world- 基于develop分支,创建release分支,测试代码
go checkout -b release/1.0.0 develop
go build -v- 如果测试失败,直接再release上进行修复后提交。
- 测试通过后,再将release分支合并到develop和master
- 删除功能分支,也可以选择性删除release分支
适合开发团队相对固定,规模较大的项目。这是非开源项目经常使用的工作流。
tags: 工作流