Git Flow工作流:如何更好实施代码管理

我负责的公司项目早在2014年就已经开始从SVN转向了Git,并同时启动了Git Flow代码管理方案。这几年下来,这个流程一直稳定执行,所以就做一个总结,谈谈如何更好实施Git Flow。

为何要引入Git Flow

如果代码没有一个合理的管理规范,两个人同时修改一份代码很可能会引发更加严重的问题,而且代码极其混乱,当出问题了,我们也没有办法切换到正常的分支。关于代码的管理规范,Git Flow就是一个极其合适的工作流程。

  • 通过规范化的流程,使得产品、开发与测试等各个部门更高效的协同工作。
  • 通过规范化的流程使得产品高效稳定运行。
Git Flow

Git Flow实际上就是分支的管理,规范我们如何更加合理地管理各个分支,避免流程出现混乱。


image.png

规范

我们的分支命名必须是严格规范,分支只有master、develop、feature/xxx、hotfix/xxx这几种,也可以增加一个release分支。

命名
  1. master、develop、release都是只有一个分支,而且只有管理员才拥有master、develop的权限,其他的开发者没有push 代码到这些分支。
  2. feature的命名是遵循 feature/功能描述,也可以增加目标版本信息feature/5.0.1/功能描述
  3. hotfix的命名和feature差不多,通常只有hotfix/4.9.0这样的命名。

说明

master

master分支只要是作为正式版本的一个备份,如果我们需要修复线上的问题,可以从master分支拉取代码进行修复。但是除以之外,我们还会有tag标签作为版本的管理。

develop

当我们在开发新功能的时候,我们都是基于

feature

通常上feature是基于develop的分支,最后也是合并到develop分支,原则是必须经过Code Review才能合并。

hotfix

当系统出现问题的时候,需要进行紧急修改的时候,就好基于master创建一个维护(hotfix)分支。原则上hotfix必须是基于master的分支。

image.png
tag 标签

标签是版本管理最重要的手段,我们每一次发布新版本,都必须在master分支打一个tag记录版本号,之后我们就可以通过tag标签找到对应版本的代码,用于回溯。


image.png

Pull Request(Merge Request)、Code Review

Pull Request,又称为 Merge Request,是 Git Flow 中非常重要的流程之一,原则上,所有的分支合并都必须走这个流程。开发者在自己的feature分支上开发功能,并且已经通过了测试,那就可以发起Pull Request请求到develop分支,代码审核员完成对代码的Code Review,如果有问题就提出建议驳回,开发者最终完成修改后再次发起合并请求。

基本原则

  1. 开发者的本地无需拥有master分支。
  2. 开发者无权对master、develop代码进行更改(不能push到master、develop)。
  3. 只有管理员拥有合并代码到master、develop的权限。
  4. 只有在功能完成后才可以请求pull request,避免单个功能进行多次pull request。
  5. 进行pull request前必须合并develop的最新代码到自己当前分支,同时解决冲突。
  6. 原则上单个任务作为最小颗粒,只能由单个程序员,若任务过大,就分拆子任务,以子任务作为最小颗粒。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Git 规范 所有使用了本规范的项目,必须严格规范操作,否则不予以合并代码、提测、打包上线等后续操作。 基本要求 ...
    zgsddzwj阅读 14,682评论 1 14
  • 开篇 Git 三大特色,分支,暂存区,工作流,今天终于要写到 WorkFlow 了,我彷佛已经看到胜利的曙光,走起...
    段浅浅儿阅读 6,895评论 0 4
  • 一、简介 Git Flow定义了一个项目发布的分支模型,为管理具有预定发布周期的大型项目提供了一个健壮的框架。 二...
    _Mitch阅读 26,716评论 2 41
  • 简介 现代软件开发过程中要实现高效的团队协作,需要使用代码分支管理工具实现代码的共享、追溯、回滚及维护等功能。目前...
    Lucas66阅读 12,566评论 0 5
  • 塞斯纳172(Skyhawk),我的1:72机模。麻雀虽小,五脏俱全,驾驶舱内的各种仪表很齐全,这种飞机如果...
    掠岸飞阅读 838评论 0 0