概述

随着项目越来越复杂,以至于出现一种现象:开发完成的代码不敢提交到远程仓库,怕升级系统时引发问题。这也暴露出测试、管理上的缺陷。

软件系统的升级发布与开发人员和代码管理是密不可分的,良好的代码管理有助于提升团队的开发效率,使软件版本的迭代变得清晰可控,因此有必要建立一套代码分支管理流程。

GitFlow

GitHubFlow

GitFlow中分支比较多,不太适合持续发布的开发场景。持续发布,就是指随时提交,随时发布,不需要等待某个特定的时间或者版本。

GitHubFlow对GitFlow做了简化,专门适用于持续发布的开发流程。它只维护一个长期分支master,其它的无论是做什么用途的分支都算临时分支,用完即删除。如此,无论何时发布master,其都是最新的内容。

使用说明

master分支是默认就拥有的,我们不能在其上进行开发,因此需要创建一个单独的分支用于开发:

1
git branch -b feature-xxx master

当内容开发完成,并且确定不再需要新增或者修改后,就可以将内容合并到master上:

1
git checkout master
1
git merge feature-xxx

此时,master上就会随时都包含最新的内容,随时都可以进行发布操作,完美契合持续发布流程。随后我们就可以将先前的临时分支删除:

1
git branch -d feature-xxx

GitHubFlow 特点:

  1. 令master 分支时常保持可以部署的状态
  2. 进行新的作业时要从master 分支创建新的分支,新分支名称要具有描述性
  3. 在2新建的本地仓库分支中进行提交
  4. 在Github 端仓库创建同名分支,定期push
  5. 需要帮助、反馈,或者branch已经准备merging时,创建Pull Request,以Pull Request 进行交流
  6. 让其他开发者进行审查,确认作业完成后与master分支进行合并(合并的代码一定要测试
  7. 与master分支合并后,立刻部署

优缺点分析

  1. 需要维护长期分支数目较少,简单容易操作;
  2. 天然契合持续发布的工作流程;
  3. 不适用于版本发布的工作流程;