Git 二三事:Git 中的工作流

每位程序员都知道的一个工具

Posted by Autuan.Yu on October 10, 2019

让流程说话,流程是将说转化为做的惟一出路

前言

每位使用Git管理项目的小伙伴,不管有没有真正地去了解过有关Git的工作流程,都在实际操作中使用了工作流,工作

Gitflow

什么是Git Flow?

Git Flow 是构建在Git工具上的一个功能驱动式开发的一套行为规范和简化部分Git操作的工具.[1]

它拥有2种类型的长期分支和3种类型的短期分支:

长期分支

  • master 主分支
  • develop 开发分支
    一般来说,master 主分支上是项目线上环境随时可部署的代码
    develop 是测试环境上最新的可部署代码

短期分支

  • 预发布分支 release branch
  • 功能分支 feature branch
  • bug修复分支 hotfix branch

短期分支是功能性,临时性的,一般以语义话的名字命名,例如:

预发布分支 : release_1.0.0
预发布说明一般会在 readme.md里,测试通过后会合并到主分支

bug修复分支 : hotfix_1134 对修改issue中提交bug的功能修复,分支名为hotfix前缀加上issue代号,用于标明该分支是修复哪个问题

功能分支 : feature_985 / feature_upload_video
功能分支是用于新功能开发时所建立的临时分支,一般来说会使用feature前缀加上功能代号,但也有直接写上功能说明的情况,主要看公司要求

短期分支是临时性的,开发完成后应将其合并到长期分支后,然后删除

其他

短期分支在理论上应该在开发完成后便删除,但在实际上,短期分支会存在一段时间,如预发布分支 release_1.0.0 会在 release_1.0.4之后才会删除,以方便项目的回滚

项目中的工作流

有关Git Flowr 的工作流介绍已经讲完,下面,将简单描述一下项目中的工作流应用

确定开发流程

一般来说,任何任务会有下列几个基本概念:

  • 未开始
  • 准备中
  • 进行中
  • 已完成

而在程序项目开发中,则会填充为:

  • 未开始/准备中 项目已立项,尚未开始,进行需求/功能/开发条件的确认,如:何时完成,功能合理性,是否需要外派等

  • 进行中/开发中
    项目所有的准备工作都已完成,所有相关人员已进入到热火朝天的开发中

  • 评审中/开发完成
    功能已开发完成,需要上级或同行进行代码评审

  • 测试中
    代码评审通过,测试人员进行测试

  • 待部署
    测试完成,等待运维人员进行部署

  • 完成
    运维人员成功部署,此需求已完成/进行维护阶段

开发时的注意事项

  • 进行任务开发时,从develop上变基来确认代码是否是最新的
  • 提交时,标明你的任务:如任务号为1234,提交时写明: Resolve #1234 或者 [#1234] 等标识
  • 提交前,并查看编译器检查,确认没有常见错误
  • 为避免重复的构建项目,可以选择使用 Jenkins 或其他工具等进行自动化部署. [2]
  • 如果有文档需要更新,请一定要更新文档

参考文档

[1] 大圣代.Git Flow是什么?你out了吧. https://www.jianshu.com/p/1d8da713316e .
[2] 晚成.快速部署项目:alibaba cloud toolkit简单使用说明. http://autuan.top/2019/09/20/cloudtoolkit/ .
[3] [加] Emma Jane Hogbin Westby.Git团队协作[M].北京:人民邮电出版社