GIT管理以及运行规范
继前天看分享的前后端分离后,又重新研究了GIT分支与各个环境的应用。
从开始使用git就一直有在网上查各种资料,查他的运行规范。但不知道是自己理解不够还是怎么的,一直用得不是很好。
根据自己的摸索,整理了一个适合自己团队工作的运行规范。欢迎大家评论区留言拍砖,有用的话点个赞。^_^
在工作执行中老遇到这2个问题:
1、测试环境是正确的,但到准生产或生产的时候会出现一些没测试覆盖到的问题,尤其是多个功能集成上线的时候,这些问题会凸显;
2、一个项目同时多个人提测,测到一半发现其中一个人的功能问题太多,不能一起上线。这时候,测试分支就不能往Release推了。那我们把另外可以上线的功能重新创建条分支就好了。但这样会有个问题,我们测试环境只有一个,测试要上线的功能时其他功能的测试工作就得停止了。
开始我想可以直接把这要上线的功能分支合并成一个新的Release分支,但这样集成后的代码在没测试过就进预发环境了。这也就是问题1多发的原因。这是极其不稳定,不严谨的。
为了解决上面的问题我把工作规范改成了这个结构:
服务器环境: 生产、准生产、集成测试、综合测试、开发
Git主干线: Master、Hotfix、Release、SIT、SVT、Develop
我把测试这一层分成了SIT和SVT两层。先上流程图,看看整个工作流程是怎么样的。

服务器环境说明:
开发:自己本地服务,开发新功能,修改Bug;
综合测试:开发人员开发完成后代码合并到SVT主线发布到测试环境,可以进行自测。测试人员大部分工作也会在这个环境进行。这个环境的包括了要上线,测试中,正在修改的所有功能代码;
集成测试:每次确认可以上线的功能后,开发人员合并各功能代到GIT的SIT主线并发布到这个环境。测试人员对集成后的代码进行确认测试;
把测试环境分成2个环境的主要原因:
1、保证预发布版确认上线的功能是经过测试的。
2、并且集成测试和综合测试工作可以并行
准生产:集成测试完成后,把集成好的代码直接推至Release主线,并发布到准生产环境,待产品经理验收;这个环境的数据应该是根线上数据同步的;
生产:验收成功,把Release分支合并到master并发布生产;
Git主干线说明
Master 生产稳定主线;
线上稳定分支版代码,这条主干是长期稳定存在的;
这条线只可以合并Release 和 Hotfix 这俩条主线的代码;
每次生产主线更新,应该同步至当下所有的正在进行的开发分支;
Hotfix 紧急修复主线;
如果线上发现需要紧急修复的BUG。就直接以Master为基础,拉出一条Hotfix分支。修复完成立即合并回Master分支,并同步到当前的开发分支;
这条主线是每个小bug就会有一条分支。修复完成的小bug稳定后删除当前分支即可。
Release 预发布主线;
上线前把集成测试完成后的分支带着版本号推送到预发主线,部署代码到相应环境,待产品验收。
验收成功则合并至Master分支并发布到线上;
如果在验收时有Bug需要修复,则直接在当前分支修复Bug;
这条主线是由多条带版本号的分支组成,且不应该删除历史版本号的分支;
SIT 集成测试主线;
这条主线主要用于某个或多个功能测试通过后,把确认上线功能之间,以及线上做好集成后的测试;
每次集成都使用Master作为基础创建一条带版本号的新分支,把要上线的功能合并。然后部署到集成测试环境中去。
这里测试发现Bug,修复需要在相应的dev分支修复,然后再合并到此分支来。
测试做完确认测试后,推送到Release即可。
这里也是由多条带版本号分支组成的,不过这里的分支可以在上完线稳定后进行删除。
SVT 综合测试主线;
这条主线只会有一条分支,测试的功能会相对较多,所有的功能,是不是一起上线都会往这条分支合并。保证测试人员可以同时测试多个功能模块;
这环境发现的Bug也是需要在相应的Dev分支修复,再合并过来;
注意,这条分支太杂了,所以它只进不出!!不要把它合并到任何分支去;
Develop 开发主线;
这条主线就是我们的开发分支了,同时多人开发,就按人员开发的功能进行分支区分;
至于线上有Bug非紧急的也是拉取Develop分支出来改。
分支命名方式建议使用开发人员进行命名,在刚开始多人开发的时候建议使用人员区分来命名。后期维护期人少,迭代升级的时候使用功能区分;
GIT管理以及运行规范的更多相关文章
- 产品管理开发之Git工作流和分支规范推荐
前言 无论是开源项目还是内部项目,使用Git都是大势所趋,尤其是在产品管理这块,使用Git大大提高了开发效率和产品的交付频率.本篇,针对Git的工作流和分支使用,进行了一些推荐. 目录 1 产 ...
- 一篇文章搞定Git——Git代码管理及使用规范
一篇文章搞定Git--Git代码管理及使用规范 https://blog.csdn.net/weixin_42092278/article/details/90448721
- Linux下,使用Git管理 dotfiles(配置文件)
1.管理你的 dotfiles 作为一个计算机深度使用者,并且长期使用 Linux 作为主要操作系统,折腾各种功能强大的软件是常有的事儿.这些软件有它们各自的配置文件,通常以 . 开头,因此有人管它们 ...
- App开发流程之源代码Git管理
base项目已经可以编译运行了,只不过没有实际功能而已.继续完善base项目前,我们需要考虑一下代码管理的事情了. 不管是一个人开发还是一个团队开发,对源代码进行版本管理是必须的,任何人对代码的的任何 ...
- git管理和自动部署项目
当一个项目需要纳入到版本控制的时候,选择的工具还是比较多的,最常见的就是工具有CVS,SVN,GIT等.在平时的开发中视情况而定,从来就没有最好的版本控制工具,只有最适合的工具.在这里我习惯用git来 ...
- Git(二)使用git管理文件版本(TortoiseGit )
一.创建版本库 什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都 ...
- 使用Git 管理heroku的项目(windows)
此过程与管理github中的项目类似,即是普通的git配置 安装 Heroku Toolbelt, 里面包含了 msygit Foreman,以及heroku的命令行界面 1.首先在heroku上新建 ...
- Coding.net进阶,使用Git管理代码
原文来自:http://conw.net/archives/18/ (我自己的博客,点击链接查看文章最新版本) Git是目前最流行的版本控制系统,这里以GitHub为例,介绍git的基本使用. Git ...
- vs2015使用Git管理项目
初级 1,在码云上去注册一个帐号(码云的私有库是免费的,安全性怎么样我不知道) 2,在码云上新建一个项目,把相关的开发人员加到这个项目里,会得到这个项目在码云上的远程仓库的地址. 3,打开vs2015 ...
随机推荐
- jmeter连接mysql数据库进行单条语句查询
前提工作: 1.在jmeter官网下载jmeter包(官网地址:https://jmeter.apache.org/).此外还需下载mysql驱动包,如:mysql-connector-java-5. ...
- CHD-5.3.6集群上sqoop安装
Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql.postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ...
- 【python】python _、__、__xx__之间的差别
本文来自 yzl11 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/yzl11/article/details/53792416?utm_source=copy 单下 ...
- 《Linux就该这么学》day4-6
继续学习打卡,这几天有事所以看视频补上了这几天的学习进度. day4:主要重点 tar打包和解压命令 tar -zxvf xxx.tar.gz 解压xxx.tar.gz (将xxx.tar.gz ...
- META-INF/MANIFEST.MF介绍
META-INF文件夹相当于一个信息包,目录中的文件和目录获得Java 2平台的认可与解释,用来配置应用程序.扩展程序.类加载器和服务.这个文件夹和其中的 MANIFEST.MF文件,在用jar打包时 ...
- chrome上一些好用的插件
1. Super Auto Refresh Plus - 这个插件可以自动刷新网页 2. 屏蔽百度推广 - 这个插件可以屏蔽百度搜索的推广广告
- linux命令 - nohup
nohup command & nohup scrapy crawl eeo > /home/wangliang/eeo.log & nohou 需要后台的命令 打印的日志位置 ...
- linux 的常用命令(2)
tail [必要参数] [选择参数] [文件] | 显示文件结尾内容 -v 显示详细的处理信息-q 不显示处理信息-num/-n (-)num 显示最后num行内容-n +num 从第 ...
- ak-2
1.人大金仓数据 jdbc 安装完成之后有个jdbc的文件夹 里边就是 jdbc包,相应的window前端工具有jdbc示例,因为太多没看全呢,有一个“”模式“”的概念 jdbc连接时如果要指定模 ...
- 【HDU5521】Meeting
题目大意:给定一张\(N\)个点的图,构成了\(M\)个团,每个团内的边权均相等,求图上有多少个点满足到\(1\)号节点和\(N\)号节点的最大值最小. 题解: 本题的核心是如何优化连边,考虑对于每一 ...