企业项目管理、ORK、研发管理与敏捷开发工具平台

网站首页 > 精选文章 正文

gitflow的工作流

wudianyun 2025-05-22 14:17:02 精选文章 3 ℃

一个团队的发展往往是由小到大,流程也是由散乱到规范的.以我们公司为例,我是两三年前来到公司的,当时我们团队只有七八个人.现在发展到了七八十人左右.我们的代码管理也有github迁移到了本地的bitbucket上了.其实呢刚开始的时候也没有什么代码管理,github也就是个存放代码的地方.现在好点了,代码上线要提交pr.分支也慢慢规范起来(我们有两个永久分支master和develope,master是线上的,develope是测试分支,其余的分支都是一些功能和bug分支).

最近呢,又出现一个让人头疼的事情.我们的测试人就一个.往往测试这个功能还没有测完,新的的功能就已经合并到develope.这就导致我们上线时候,都不知道有哪些功能.然后产品就来找了.怎么有些功能不好用就上线了.就让我们控制一下.不能这样瞎搞.然后我也开始思考,怎样才能避免这种情况呢.

开始

首先我们先说一下git的几种工作方式吧

1.集中式

大家都是在一个分支上开发,测试上线.你要是一个人开发没有问题.两三个人开发就容易出现冲突.master分支上代码混乱.所以我们可以试一下下面这种模式

2.功能分支式

大家的功能呢,都在自己的分支上去做.等你功能做完了,然后合并到master分支.你也可以建一个develope分支作为测试.大家的功能分支先合并到develope分支上测试.测试成功,将develope合并到master上线,之前我们就是这种模式.这种模式还是不够规范.缺点上面也说过了.等你们有两个团队之间的合作的时候,那你可以试一下下面的模式

3.gitflow工作流

这种模式中我们分了几种类型的分支

master(正式发布分支) develope(功能集中分支)两个永久分支,
release/v1(测试预发布分支1)两个临时分支
其余的feature功能分支,bug问题分支,hotfit修复分支等多个临时分支

gitflow工作流

在这中模式中,我们又可以分为三种情况吧

1.一般流程

开发人员,从develope分支checkout出一个自己的feature分支,在自己分支上修改.暂存.提交.然后提交pr(pull request,合并分支请求)到develope分支.在某个时间点(一般是测试人员针对上一次的功能测试完成后),从develope分支checkout出一个预发布分支release/v1用来测试,冻结测试的功能,其余的还可以正常提交pr到develope分支,但是新提交的功能不会在此次功能测试中,推迟到下一次的的预发布中测试.如果测试中遇到问题,开发人员直接在release/v1分支上修改提交即可.等测试完成后,将release/v1分支合并到master和develope分支做发布操作.一定要合并会develope分支,因为release/v1中可能会有新的提交.最后将release/v1分支删除,为什么删除呢,因为如果你不删除,那你下次预发布测试的时候,你需要提交从develope分支到release/v1分支的pr.pr的合并呢,又需要点赞.还不如直接删除了方便.但是删除之前一定要保证你的release/v1已经合并回develope和master上了.至此,一个版本发布完成.如此循环发布

2.线上紧急问题修复(紧急功能上线不测试)

对应开发人员,从master分支chekcout出一个hotfix分支,修改,提交修复.然后提交pr合并到master和develope分支中.

3.紧急功能上线测试

对应的开发人员从当前的master分支中checkout出一个自己的feature分支,添加,提交即可.等待此次版本发布完成.发布完成后release/v1版本的创建就以当前紧急功能的分支为基础.后续操作跟一般流程一样.

总结

master分支是稳定分支,develope是相对稳定分支,develope应该是所有功能比较新的分支.我们要时时保证我们正常的功能代码都会出现在master分支和develope分支.要不然有可能会出现代码丢失的情况.

其实呢,具体的情况还是要根据自己团队的实际.可能我们这边的流程还不是很完善.但是呢,慢慢的我们也会完善起来.

最后这,我想加一点,之前说分享过git的回滚,当时只在本地回滚完,最后没有提交到远程,那提交到远程怎么操作呢,正常的git push 是不可以的,因为你本地的分支回滚了,就会落后远程分支,他会提示你要先pull.如果你pull了,那你不就是白回滚了,所以你需要价格--force的参数,强制更新到远程分支上,但是你push上去后,如果别人在你回滚期间提交了新代码.那别人的的代码就会消失.但是呢,别人哪里分支会提示比线上提前了,如果别人不知道什么情况,直接push上去后,你远程回滚的代码就没有效果了.所以还是不建议去回滚远程分支.是个比较绕的操作.这个是我最近用回滚的时候发现的,在这里说一哈.git学习(3)--代码回滚

Tags:

最近发表
标签列表