一、gitflow工作流
一个完整的gitflow工作流如上图所示,下面根据上图,按
不同分支
进行说明:
1.1 master 分支和 develop分支
在Git Flow 中,这两个分支至关重要,它们会贯彻整个流程始终,绝对不会被删除。
master 分支
master 分支时常保持着软件可以正常运行的状态。由于要维护这一状态,所以不允许开发者直接对master 分支的代码进行修改和提交
。
其他分支的开发工作进展到可以发布的程度后,将会与master分支进行合并,并且这一合并只在发布成品时
即完成release分支时进行。发布时将会附加版本编号的Git标签
。
develop分支
develop分支是开发过程中代码中心分支。与master 分支一样,这个分支也不允许开发者直接进行修改和提交。
程序员要以develop分支为起点新建feature 分支,在feature 分支中进行新功能的开发或者代码的修正。也就是说develop分支维系着开发过程中的最新代码
,以便程序员创建feature分支进行自己的工作。
1.2 feature分支
功能特征分支,基于develop分支克隆,主要用于多人协助开发场景或探索性功能验证场景,功能开发完毕后合并到develop分支。feature分支可创建多个,属于临时分支,目的实现后可删除分支。
1.3 release分支
测试分支,基于delevop分支克隆,产品编码工作完成后,发布到本分支测试,测试过程中发现的小bug直接在本分支进行修复,修复完成后合并到develop分支。本分支属于临时分支,目的实现后可删除分支。
1.4 bugfix分支
Bug修复分支,基于master分支或发布的里程碑Tag克隆,主要用于修复对外发布的分支,收到客户的Bug反馈后,在此分支进行修复,修复完毕后分别合并到develop分支和master分支。本分支属于临时分支,目的实现后可删除分支。
二、sourcetree中应用
基本的操作流程
1. 先用sourceTree 创建本地git 项目,xxxProject,
2. 在项目里面先提交一次 commit 一下,默认提交在了 master分支;
3. 然后在 sourceTree工具 右上角,点击 GitFlow,开启git Flow 规范模型的开发
如上图,在开启gitFlow 之后;
生产环境分支使用:master
开发分支使用:develop
当需要新增加功能,发布版本时,创建补丁修复bug时,分别有对应的 feature,release,hotfix前缀这样的分支
这样在项目的开发过程之中,管理项目分支就变得非常的规范了;
4:开启之后,我们的项目就回到了develop 分支,以后所的开发都在这个分支上进行;当开发完成一些模块时,就可以回去 master分支
合并
5. 使用 gitFlow 添加新功能 ,点击 sourceTree 的右上角 Git Flow按钮,会出现 菜单,选择创建新功能
输出新功能名称,默认会在 新功能 分支上开发新功能;
新功能 开发完成之后,再次点击 git flow 按钮,会出现 完成新功能,按钮
点击,完成新功能,会把当前新功能合分支 合并到 develop分支,并删除新功能分支。
- 使用Git Flow 发布新版本,同样点击 git Flow 按钮,菜单选择 创建新发布版本 ,
在发布版本分支上,完成项目发布配置之后,提交,再点击 git flow 按钮,会弹出 完成发布版本 按钮,点击,
确认之后,会发现 发布版本的分支,会合并到 develop分支 和 master 分支,表示生产上发布了一个版本
- 使用git flow 新建补丁,修复bug
比如上面发布的一个版本在生产用的时候,出现了一个 bug,这时,点击 git flow 菜单,选择 建立新的修复补丁
这时,bug修复分支,是基于 master的,在修复bug后,再次点击 git flow 弹出,完成 补丁修复
确定之后,会发现,新修复的bug分支,会合并到 master分支和develop分支
8.最后我们再来看看,经过上面的 创建项目--开启gitflow---添加新功能---发布新版本---修复bug 等流程之后,当前的 git提交状态吧
git 强大的分支管理功能,再加上 git flow 模型,,项目的代码管理开发,如此的清晰明了啊
三、注意点
- 多人协作的时候,应由仓库(项目)管理员来创建
master分支
并在本地初始化好GitFlow
后一并将master和develop分支推送到远程仓库(master分支默认有写保护,只有创建者才能写入推送,其他协作者只能pull拉取)。其他协作者将项目克隆下来,同样要记得初始化GitFlow
,注意配置要保持一致。其他协作者在本地完成feature开发,然后推送到develop分支,由项目管理员来负责发布release分支和发布新版本
参考文献:
A successful Git branching model
深入理解学习Git工作流(git-workflow-tutorial)
GitFlow with SourceTree