热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

git版本管理方式

工作到现在,遇到一些使用git做代码管理的仓库。个人觉得以下的分支管理方式比较合理。git分支分类首先git大概分【master】,【dev】,【test】,【stable(pre

工作到现在,遇到一些使用git做代码管理的仓库。个人觉得以下的分支管理方式比较合理。


git分支分类

首先git大概分【master】,【dev】,【test】,【stable(prepare)】等主要分支。还有【feature/***】,【hotfix/***】,【release/***】等分支以及【tag/***】标签。

【master】为线上环境,与线上环境一致

【dev】分支为开发环境,给开发使用的环境,会比较混乱

【test】分支为测试环境,主要给测试使用的环境,保证代码的干净

【stable(prepare)】分支为预生产环境,主要给上线测试使用的环境,保证代码的干净

【feature/***】 需求分支,建议以jira,redmine,issue的单号作为分支名,或者有代表性的名称,根据名称可以追溯开分支的原由。

【hotfix/***】 bug修复分支,建议以jira,redmine,issue的单号作为分支名,或者有代表性的名称,根据名称可以追溯开分支的原由。

【release/***】 发布分支,建议以版本号未分支名称,主要作用是适应多人并行开发。

【master】,【dev】,【test】,【stable(prepare)】等主要分支,理论上不允许直接修改,除非在合并代码时有冲突要解决,可以手动修改。

【feature/***】,【hotfix/***】,【release/***】 ,理论上是从master分支中切出来的。

【tag/***】标签是作为历史发版的一个备份,可以快速的回滚值上次版本。


开发-测试-上线过程

当有需求来时,根据任务拆分获取jira,redmine,issue的单号,从【master】中切出各个【feature/*** 】。

开发在本地测试通过自己的【feature/***】 需求分支后,合并至【dev】分支再次测试。dev测试通过后,【feature/***】 需求分支合并至【test】分支。

当需要上线时,从【master】切一个【release/***】分支,名字用上线的版本号。将要需要上线的【feature/***】,【hotfix/***】,合并到【release/***】分支。在将【release/***】分支合并到【stable(prepare)】分支,测试进行完整测试。

测试通过后,就可以将【release/***】准备上线。

上线前将【master】切一个【tag/***】,名称为当前的版本号,然后将【release/***】分支合并到【master】。


为什么这么玩

因为在开发过程中,可能由于一些外部因素,导致整批需求中有部分功能不能上或者需要配合其他团队单独先上某个功能,所以我们需要将功能拆分细,作为多个【feature/***】来开发。当需要上线时,就能灵活组合代码上线。而【release/***】作为一次发布,能够比较规整的管理上线的代码。

标准的gitflow流程不适合国内的开发环境,git适合多人并行开发多个版本。

标准的gitflow中,【release/***】是从【dev】切的,但现实情况【dev】的内容很可能是个远超【master】,因为你的任务总是做完了来新的,总是在不断往前走的,但是上线的节奏可能由于各个因素而延迟。如果从【dev】切,就会将不需要上的代码无形中合到了【master】.



推荐阅读
  • 本文整理了Java中com.atlassian.scheduler.config.JobConfig类的一些代码示例,展示了JobConfig ... [详细]
  • 开发笔记:DevOps Gitlab环境部署
    本文由编程笔记#小编为大家整理,主要介绍了DevOpsGitlab环境部署相关的知识,希望对你有一定的参考价值。DevOps介绍 ... [详细]
  • mongoDB介绍、安装、搭建简单的mongoDB服务器(一)
    相关网站1. http:www.mongodb.org 官网,可以下载安装程序,和doc,和驱动等。2. http:www.mongoing.com 国内官方网站,博客,问 ... [详细]
  • GitLab 8.3.3 发布 开源代码管理
    2019独角兽企业重金招聘Python工程师标准GitLab8.3.3发布,包括GitLabCommunityEdition(CE)和EnterpriseEdi ... [详细]
  • 02 敏捷开发测试流程
    一个典型的敏捷开发测试流程为了详细讲解不同阶段或职位(Title)的测试开发所做的工作有哪些不同,我以当前流行的敏捷模式下的软件开发测试 ... [详细]
  • 作为Spring的高强度使用者,没理由不对Spring的发展历程感到好奇吧?想知道Spring的作者,Spring是怎样一步一步的发展到今 ... [详细]
  • 在下文里,首先将结合我了解的多家培训班辅导学员就业的情况,来讲讲培训班学员如何高效找工作。由于本人在周末会兼职在培训班讲课,也帮助过不少学员成功入职,所以下文还会给出“培训班学员如 ... [详细]
  • 返回值为Boolean的话回在对象转json的时候丢失掉这个属性,因为json认的是小写。这个算jaxb的一个bug:https:java.netjirabrowseJAXB-51 ... [详细]
  • 全局角度出发讨论敏捷
    JonKern对于是什么促成了敏捷的成功有着自己读到的见解。你可能会不同意他的观点。下面列出了一些建立在项目全局角度之上的关键实践,项目本身就是从此开始的。如果不能从系统角度来做项目,那它就不能达到预期的效果,甚至可能会失败。我很早以前就认为,开发软件就像是在完成一个很长的待办事项列表。我试了很多方法来运行项目,从记事贴到Jira(从Jira刚发布起我就开始使用)。我使用传统Scrum风格的Spr ... [详细]
  • HIVE 移动数据 (从表到分区表,分区表到子分区表)
    为什么80%的码农都做不了架构师?ExchangePartitionSkiptoendofmetadataCreatedbyNamitJain,lastmodi ... [详细]
  • 请问:FixVersion字段这个字段怎么设置?比如我想添加一个自定义的字段,在创建时不见不能填写,到解决时才填写,而填写后浏览问题又可见,怎么设置?另:怎么修改jiraview界 ... [详细]
  • 将单条消息的大小设置为大于服务端可以接受的消息大小,模拟发送异常的场景:消息大小1500message.max.bytes1000batch.size16384日志一直刷:[201 ... [详细]
  • 升级到grails2.3.2之后,运行时报如下的异常:ExceptioninthreadmainError|ForkedGrailsVMexitedwitherrorjava. ... [详细]
  • 我很清醒。我躺在床上。我满头大汗,但我很冷。在早晨的一小段时间里,梦想如恐怖般生动。我站在客户办公室,我以前来过这里,我知道 ... [详细]
  • 【Maven】POM标签大全详解POM(ProjectObjectModel,项目对象模型)是M ... [详细]
author-avatar
DiKi造型Alen老师
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有