之前总结过一篇关于git入门的文章,这几天心血来潮,结合我在手机微博开发团队中实际经验谈一谈git在工作中的应用吧。


集中式和分布式

git与之前的svn相比,主要体现在集中式和分布式的区别。集中式主要依托于中央服务器,开发人员从中央服务器获得最新的代码,开发完成后再提交到中央服务器,脱离了中央服务器,基本上服务就不行了。而分布式版本管理系统在本地都有一个仓库,可以不依赖中央服务器进行开发提交代码,在需要往远端合并的时候才进行。

常规上线流程

  1. 一条基准线master,master上面的代码都是上线最新的代码,所有人都通过master更新同步代码。

  2. 在某个时间点,比如今天的11点吧(个人推荐11:00左右上线,即上午上线),如果测试没有问题,此时基于master创建个上线的tag,我们命名为release.0722.0,然后把它推上线。

  3. 稳定之后,我们进行下一个版本的准备,此时基于master创建一个分支branch,比如:online.0723.0。

  4. 然后将准备在0723.0上线的merge request都合并到这个分支上面。然后创建QA回归测试tag 如candidate.0722.0,然后把这个测试tag推到仿真机器上测试。

  5. 当QA测试没有问题后,会给开发测试邮件,此时我们会把上述online.0723.0的代码合并到master上,然后基于master打出一个最新的常规上线包如release.0723.0上线,此时也确保master上面是最新的代码。

? 6. 如此反复,进入下一阶段的常规上线循环。


紧急上线流程

对于紧急上线流程的情况,我们这里还是十分常见的,比如紧急修复bug,紧急功能上线等情况。

紧急上线必然有紧急的流程应对,首先,这个需求必须领导知道的。然后业务方测试没有问题,在确认没有问题的情况下,这部分代码是直接合并到master上,如图中步骤6,然后基于最新的master代码创建tag,如release.0723.1,然后上线。这个地方其实可以加上一个emergency标识,告诉大家这个上线是个紧急上线。


好了,关于git和gitlab的基本功能就到这里了,下一篇文章我们介绍下git hooks和gitlab hooks以及gitlabCI等扩展功能。