设为首页 收藏本站
查看: 1133|回复: 0

[经验分享] GIT分支版本管理

[复制链接]

尚未签到

发表于 2018-9-17 10:18:08 | 显示全部楼层 |阅读模式
  目前常用的git分支管理实践有三种,即单主干(Trunk-Based development),GitHub Flow与GIT Flow三种。
  TBD与SVN类似。开发和修复均在trunk上进行,按照周期打出Tag。发布首选Tag,如Tag不满足需求,则从trunk上打包发布。
  GitHub属于双分支体系,一个是Master,一个是开发分支,master提供生产系统的发布,开发分支用于开发提交;任何修改、开发、功能都在从Master分支拉出的新分支进行,新分支代码完成通过测试和代码审查后,合并入master部署发布。
  早期的OA发布是一种变体的GitHub,即所有开发人员共用develop分支,test系统由develop打包,测试完成后合并至master。图示如下:
DSC0000.png

  OA开发是一个长期的较长版本发布周期的持续集成、随时发布的项目。GitHub并不适合。而另外一种Git分支管理即Git Flow概念的核心则是版本发布,适用于持续集成、随时发布的项目。原生的Git Flow包括五种分支,master\hotfix\release\develop\feature;develop上为下一个版本将要发布的内容;当一个新功能需要开发时,从develop上新建feature分支,开发完成后合并至develop,删除feature;当需要发布时,从develop拉出release分支,在release上打包部署测试,需修复时,直接在release上提交,修复后再次打包部署测试;当release上通过测试后,将修复合并至develop和master,生产则从master打包。
  我们所采用的变体的GitFLow图示如下:
DSC0001.jpg

  正如《Git 分支管理最佳实践》一文中所述的“每个开发团队都应该根据团队自身和项目的特点来选择最适合的分支实践”、“首先是项目的版本发布周期。如果发布周期较长,则 git-flow 是最好的选择。git-flow 可以很好地解决新功能开发、版本发布、生产系统维护等问题;如果发布周期较短,则 TBD 和 GitHub flow 都是不错的选择。GitHub flow 的特色在于集成了 pull request 和代码审查。”。我们对Git flow进行了变体。将feature与develop合并为develop,只采用git flow的四个概念,即master hostfixes,release和develop。
各个分支作用
  Master分支 :仅用于正式环境发布重大版本 (体现在正式环境)
  Hotfixes分支:仅用于正式环境版本发布后修复正式环境BUG(当bug修复完成需合并至develop(或者release分支)程序员不应该去合并master分支当bug解决完毕后并且测试人员测试认可后才可以合并至master分支上。
  Release 分支:预发布分支,当确定预发布时间后打包预发布版本,打包后在预发布版本上测试测试后问题将在预发布分支上解决测试完全没有问题后合并至master 及develop分支上(体现在oarelease环境)
  Develop分支:日常开发分支,日常新功能开发在此分支上但其他分支所做的操作最终都会合并在此分支上(体现在oatest环境)
整体发布步骤:
  1.项目经理确定发布新版本时间,确定后在Release 分支上打出tag标签确定版本。
  2.测试人员根据release版本的功能验证,及测试,测试出现问题后提bug,并附带版本
  3.开发人员分配到bug后切换Release 分支上修复bug,只修复bug提交
  4测试人员根据jira提交情况在Release 分支上进行更新并且验证新版本bug
  5.当验证完毕后,将release分支合并至master分支及Develop分支。
  6.正式环境打包更新
异常发布步骤:
  当正式环境出现重大bug后需更新正式环境
  发现重大缺陷,
  在Hotfixes分支上解决bug,当解决完后需要将代码合并此时会出现两种情况
  ⑴.当项目处于整体发布时需要将Hotfixes合并至Release 分支上。
  ⑵.当项目不处于整体发布阶段将Hotfixes合并至Develop分支。
  以上是固化的Git flow。但在实践中hotfixes较少使用,且随着代码的稳定,flow显得臃肿和难于理解。在随着项目团队的进一步缩小和代码的逐渐稳定,我们又将四分支flow修正为三分支flow,即develop,master,release。对Master上的修复采用直接提交并合并至release和develop的方式。如下图:
DSC0002.png



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-588192-1-1.html 上篇帖子: git保存帐号密码 下篇帖子: centos7安装最新版git及免密码登录配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表