基于gitlab的Git团队协作流程

Git 的一大特点就是可以创建很多分支并行开发。正因为它的灵活性,团队中如果没有一个成熟的分支模型的话,那将会是一团糟。

分支模型

有个比较成熟的分支模型git flow。需要注意的是,它只是一个模型,而不是一个工具;你可以用工具去应用这个模型,也可以用最朴实的命令行。所以,重要的是理解概念,不要执着于实行的手段。

简单理解几个概念:

  • master-最为稳定功能最为完整的随时可发布的代码;
  • hotfix——修复线上代码的 bug;
  • develop——永远是功能最新最全的分支;
  • feature——某个功能点正在开发阶段;
  • release——发布定期要上线的功能。

「master」和「develop」是主要分支,其他分支是派生而来的。各类型分支之间的关系用一张图来体现

image.png

开发流程

1.开发接收需求,切换到develop分支,pull develop分支最新代码,拉取特性分支feature;

2.每一个新功能的开发都应该各自使用独立的feature分支。为了备份或便于团队之间的合作,这种分支也可以被推送到中央仓库,B和A可以同时在一个特性分支上协作。

3.功能开发完毕并且自测后,先切换到 develop分支,pull最新代码,切回功能所在的feature,把develop分支的代码合并进来,有冲突和配合的人一起解决。

4.到 GitLab 上的项目首页创建feature合并到develop的合并请求(merge request),比对和上个版本的代码变化,指定有合并的和参与代码审核的同事。(代码审核)

5.项目负责人在收到合并请求时,应该先做下代码审核看看有没有明显的严重的错误;有问题就找负责开发的人去修改,没有就接受请求并删除对应的 feature 分支。

有问题的代码开发者自己修改后在push到仓库,代码审核页面会同步最新修改。

6.负责测试的人从develop创建一个 release 分支部署到测试环境进行测试,若发现了 bug,相应的开发人员就在 release 分支上或者基于 release 分支创建一个分支进行修复。

7.当确保某次发布的功能可以发布时,负责发布的人将 release 分支合并进 master 和 develop 并打上 tag,然后打包发布到线上环境。

流程图如下:

image.png

实际开发中会有几个问题:

1.同时维护master和develop两个分支很耗时,每次release分支发完版都要同步回master&develop;

2.功能并行开发时,无法及时同步上线和测试节点;

某个业务方的测试现在需要测试,但是不再这个版本,就无法操作。因为release分支是从develop上拉取的,同一个节点不能合并不再本期发版计划的代码step[5]

测试环境也只能同时发布一个分支step[6]

3.审核代码后再次修改审核。step[6]&step[4]

推荐方案

image.png

我们简单的维护两个主要分支,不再维护release分支。

master -- 功能最稳定,线上正在运行,可随时发版,受保护的分支。

develop(test) -- 是功能最新最全的分支,也是部署在测试环境的分支,在我们这也可以部署在debug环境。

优化后的开发流程:

1.开发者pull master最新代码,拉取feature分支 统一命名风格:feature_seckillCoupon_denghuanqing_20181223

2.在feature分支上完成开发自测后,切换到test分支,pull最新代码,把feature分支合并到test分支,可能会出现冲突,和协作同事商量解决。

注意,非简单的解决featue a 和test分支冲突,需要商量是feature a还是feature b需要调整代码,假若feature a需要调整代码,feature a调整代码,合并到test分支。feature b 重新操作合并到test分支。

3.通知测试在测试分支测试,这个阶段不用关心发版进程,除非业务互相依赖。bug也在feature分支修改,修复完成后合并流程参考step2;

4.测试完全通过后,开发切换到master分支,pull最新代码,切换回feature分支,把master分支合并到feature分支(保证即将发布的代码没冲突),在gitlab提交合并请求,写上功能需求点,脚本等,指定项目管理员审核并且合并代码。

5.管理员审核代码,处理(本次版本内)合并请求,打tag,发版,走线上验证流程。

6.完成功能开发。feature可以保留几周后统一清理,我时常会在功能分支上找一些写过的代码。

7.备注:修改线上的bug重新从master拉去分支或者使用未被污染的feature分支都ok。

gitlab操作演示

1.保护分支

2.提交合并请求

项目首页点击下拉框

image.png

3.选择要把那个分支合并到master

image.png

4.填写本次发版相关描述,比对代码差异。确认提交后通知相关权限用户。(gitlab同时提供邮件通知)


image.png

5.审核&合并代码

image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Git分支管理 master:主分支,当前分支上的代码随时可以直接发布,并且只能通过Pull Request从其他...
    UEUEO阅读 9,794评论 5 33
  • Git 规范 所有使用了本规范的项目,必须严格规范操作,否则不予以合并代码、提测、打包上线等后续操作。 基本要求 ...
    zgsddzwj阅读 13,861评论 1 14
  • 多种多样的工作流使得在项目中实施Git时变得难以选择。这份教程提供了一个出发点,调查企业团队最常见的Git工作流。...
    JSErik阅读 4,507评论 2 8
  • Git 仓库申请流程 1. 开发主管向Git 管理员提交Git 仓库申请【邮件:发送给Git 管理员,抄送给项目经...
    骚包霸天虎阅读 2,144评论 0 0
  • 现在都很少收漫画了,之前很喜欢的一部漫画,还跑去收了日版,(其实完全看不懂啊,,日版漫画都是拿来落灰的) 买的时候...
    帽子戴反了阅读 2,750评论 7 10