简介
Git 作为源码管理系统,不可避免涉及到多人协作。团队中商定一个工作流程至关重要的。本文已常用的Git flow 做说明,该模型如下图所示:
说明
该模型总存在两个长期(核心)分支:
- master
- develop
master
,我们认为该分支存放对外发布的版本,任何时候该分支都是稳定的发布版。我们不可以直接在该分支push 代码。
develop
,我们认为该分支的代码存放的是达到稳定并且准备发布时的,我们的新功能开发都是基于此分支。
其次,项目存在的三种短期分支:
- feature
- hotfix
- release
feature
,即功能分支,我们进行新功能的开发将在此分支上进行。该分支的代码基于develop 并且最终回合并回develop 分支。
hoxtfix
, 即补丁分支,我们进行线上问题修复将在此分支进行,该代码分支基于master 并且最终将合并会develop、master 分支。
release
, 即预发分支。
操作流程实例
当我们进行新功能开发时,需要基于develop分支拉取feature分支进行开发,如增加了一个功能 我们将基于develop分支创建 feature/news 分支。
当功能开发完毕时,我们将提交merge request,将该功能合并到develop 分支。
当所有feature 功能开发完毕,且都已合并回develop,且开发自己测试完毕后。准备创建预发布版本,就可以基于develop创建release分支。此时测试人员可以基于该版本release进行测试,发现了问题,则需要基于release创建分支,进行修复后,将这些修改合并回release分支同时需要合并回develop分支。
当具备上线条件时,需要将release分支合并到master和develop分支,然后进行上线操作,线上发布的为master分支。
当需要修复线上bug时,我们需要基于master创建hotfix分支,当修复且验证完毕后,将hotfix分支合并回master分支,同时为了保证该hotfix包含在下一个发行版中,同时需要合并回develop分支。最后删除hotfix分支。
SourceTree操作
SourceTree 的图形化界面git工具,可以简化我们上述的复杂操作。
初始化项目
点击右上角Git工作流按钮,初始化git flow。
开发新功能
点击创建新的功能,此时我们发现已经为我们创建了feature/news分支,我们将在此分支进行功能开发。
开发完成
点击完成功能。 此时我们发现已经将feature/news分支合并到了develop分支。
预发布 开始release
点击建立新的发布版本,此时我们发现已经为我们创建了release/v1.0.0 分支。
发布 完成release
点击完成发布版本,此时我们发现已经将release/1.0.0分支合并到了develop和master
线上问题修复 开始hotfix
点击创建新的修复补丁,此时我们发现基于master为我们创建了hotfix/v1.0.0-20191226
完成问题修复 完成hotfix
点击完成修复补丁,此时我们发现将hotfix合并回了develop和master分支。
参考文档
https://nvie.com/posts/a-successful-git-branching-model/
更多文章请访问http://blog.liuqitech.com/