git flow工作流及sourcetree实现

一、gitflow工作流


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分支,并删除新功能分支。

  1. 使用Git Flow 发布新版本,同样点击 git Flow 按钮,菜单选择 创建新发布版本 ,

在发布版本分支上,完成项目发布配置之后,提交,再点击 git flow 按钮,会弹出 完成发布版本 按钮,点击,

确认之后,会发现 发布版本的分支,会合并到 develop分支 和 master 分支,表示生产上发布了一个版本

  1. 使用git flow 新建补丁,修复bug

比如上面发布的一个版本在生产用的时候,出现了一个 bug,这时,点击 git flow 菜单,选择 建立新的修复补丁

这时,bug修复分支,是基于 master的,在修复bug后,再次点击 git flow 弹出,完成 补丁修复

确定之后,会发现,新修复的bug分支,会合并到 master分支和develop分支

8.最后我们再来看看,经过上面的 创建项目--开启gitflow---添加新功能---发布新版本---修复bug 等流程之后,当前的 git提交状态吧

git 强大的分支管理功能,再加上 git flow 模型,,项目的代码管理开发,如此的清晰明了啊

三、注意点


  1. 多人协作的时候,应由仓库(项目)管理员来创建master分支并在本地初始化好GitFlow后一并将master和develop分支推送到远程仓库(master分支默认有写保护,只有创建者才能写入推送,其他协作者只能pull拉取)。其他协作者将项目克隆下来,同样要记得初始化GitFlow,注意配置要保持一致。其他协作者在本地完成feature开发,然后推送到develop分支,由项目管理员来负责发布release分支和发布新版本

参考文献:


A successful Git branching model
深入理解学习Git工作流(git-workflow-tutorial)
GitFlow with SourceTree

你可能感兴趣的:(git flow工作流及sourcetree实现)