各位大神,小弟问一个流程问题
有一个master分支,一个dev分支,现在打算是这样子的,如果有一个新需求过来,则在master拉一条新功能分支进行开发,开发完成后合并到dev分支进行测试,如果没问题的话则直接把新功能分支合并到master上,我想问下这个流程是否有问题?如果有问题,问题出在哪?小白求教,大神勿喷
各位大神,小弟问一个流程问题
有一个master分支,一个dev分支,现在打算是这样子的,如果有一个新需求过来,则在master拉一条新功能分支进行开发,开发完成后合并到dev分支进行测试,如果没问题的话则直接把新功能分支合并到master上,我想问下这个流程是否有问题?如果有问题,问题出在哪?小白求教,大神勿喷
需求如果是单独的不划入此迭代的,或bug是线上bug,是可以直接从master上拉一条新分支进行feature 开发和测试 ,不需要合并到dev的,应该等到新分支稳定了,就可以分别合并到master,dev;
15 回答8.4k 阅读
8 回答6.2k 阅读
5 回答2.8k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
3 回答2.6k 阅读
2 回答3.1k 阅读
总得来说,具体的
git
工作流选择还是根据公司实际情况来说叭,也没有绝对的好坏,适合的才是最好的,所以如果你们现在这套工作起来感觉还不错,其实也就可以了但是我可以提出自己感觉有可能有问题的地方,毕竟不在你们实际工作环境中,没准我提出的问题压根你们就不会出现,只是说这些问题假设出现的话,对你们现在的
git
工作流模式可能会有些影响1.
master
分支稳定问题master
分支作为现网正在跑的代码分支,它的稳定程度会决定着系统运行的好坏,而对它的操作某种意义来说只有在经过测试后的代码要合并上线进行merge
时才会用到master
分支,可以说master
最好是不要进行任何直接的commit
和push
操作,其他任何时候应该尽可能减少任何对于master
分支的操作,包括从master
分支上拉取新的分支这样的看似不会对master
造成影响的操作,倒不是说不能从master
分支上拉取,主要是新需求就拉取的话,这样的频率太高了,频率高,又是人工操作,大家熟悉程度又不一样,就很可能对master
分支造成影响假设你们团队每次需求开发都是从
master
上拉取一个功能分支大家一起在这个功能分支开发可能还好,因为只有一次拉取动作,leader去操作可能问题也不大,但是要是那种每个人都要单独拉一个个人分支作为功能分支开发,团队5个人,每个人自己去拉取属于自己的功能分支,那就不知道他们会对master
分支做出什么可怕的操作了...2. 新功能分支
merge
到master
这个操作看上去没问题,但是实际上有可能出大事,毕竟接受过测试的代码才可以
merge
到master
,实际接受测试的是dev
分支啊,dev
分支包含了新功能分支,这样测试没问题,但不代表着经过测试了dev
之后就可以把新功能分支merge
到master
分支上,这个还是有差别的其实上面2个问题在以前我工作中也是遇到过的,所以当时我们公司最后采用了Gitflow的工作流模式,当然任何模式的学习会需要一些学习成本,所以实际是否运用到自己实际公司,还需要自行判断了,但是按照它给出的模式进行版本划分,确实可以解决大多数开发过程中的问题,就算不完全使用,也可以作为一些参考
在Gitflow工作流中,首先把代码分支分成几个部分
第一部分是主要部分,拥有无限生命周期的两个分支
master
当然就是我们线上的分支代码了,而develop
是开发集成分支,这和题主的dev
有些不一样,因为题主你的dev
还包含了测试功能。第二部分是辅助部分,他们生命周期有限,迟早是会被移除的
feature
代表功能开发分支,产品经理那边的需求release
代表发布分支,是测试人员进行测试的分支hotfix
代表现网bug
分支知道上面5个分支,现在连在一起说明一下它们各自的功能
1. 产品经理新需求来了
develop
分支拉取一个feature
分支进行开发(这个时候可以团队成员可以自己去拉取自己的feature
进行开发)feature
到develop
,删除对应feature
develop
分支拉取一个release
分支,这个分支交给测试进行测试,测试完后,合并release
到master
和develop
,然后删除release
,如果期间测试有bug
也在这个release
分支上直接修改2. 现网
bug
来了master
分支拉取一个hotfix
分支进行开发hotfix
分支进行提测,测试有bug
直接在hotfix
上修改,master
和develop
,最后再删除hotfix
基本上上面两种流程可以包含了日常开发中大多数情况,并且也解决了上诉我提到的2个问题
当然这个明显有一些额外的学习成本,并且也要开发成员大家都认可并且执行这样的操作才行。
如果想要系统了解,可以参考
gitflow
作者原文《A successful Git branching model》最后再介绍一个
gitflow
的插件吧,毕竟让人手动去执行各种的操作还是有可能执行错的,比如release
需要分别merge
到master
和develop
上(merge
完了别忘了还要分别push
),完了还要再删除release
,这一套git
操作下来还是要整死个人...就是这个

git flow intergration
,看看这个安装量其实就说明针还不戳怎么用,网上很多教程,我就不赘言了...
稀里哗啦就说了这么多了,主要以前这个问题,也是我们团队内大家积极思考的问题,当时也是大家群策群言吧,选择了
gitflow
,算是经验之谈,希望可以有帮到题主~( ^_^ )/~~拜拜