Git 代码分支管理 | 京东云技术团队
作者:京东科技 周新智
一、引言
近日,IoT 研发团队加入了不少新同学,对 git 分支的命名和管理方式有些许的模糊,分支的命名规范以及管理方式对项目的版本发布至关重要,为了解决实际开发过程中版本发布时代码管理混乱、冲突等比较头疼的问题,我们将在文中阐述如何更好的管理代码分支。
二、总览
从上图可以看到主要包含下面几个分支:
三、主分支
主分支包括Master Branch、Release Branch、Dev Branch 三个分支:
1、Master Branch
用来进行版本发布,也就是当前线上运行的代码分支
2、Release Branch
Release Branch 在我看来就是 Pre-Master。Release Branch 从 Master Branch 检出,最终会合并到Master Branch,合并后 Master Branch上就是可以发布的代码了。
所有新增功能的开发分支都是从 Dev Branch 检出作为本地分支,以 feature-功能名-姓名首字母简拼,当功能开发完毕的时候,将 feature Branch 合并到 Dev Branch,在测试或预生产环境进行部署,测试通过后,再将 feature Branch 合并到 Release Branch。
如果出现线上问题需要紧急修复,则从 Release Branch 检出作为本地分支,以 hotfix-功能名-姓名首字母简拼, 当问题修复完毕的时候,将hotfix Branch合并到 Dev Branch,在测试环境进行部署,测试通过后,再将 hotfix Branch 合并到 Release Branch,在预发环境再次验证。
待所有的测试和准备工作做完之后,我们就可以将 release 分支合并到 master 分支上,并择机进行线上发布。
3、Dev Branch
dev 就是我们的日常开发分支。
四、辅助分支
1、Feature分支
feature 分支用来开发具体的功能,一般 fork 自 Dev 分支,以 feature-功能名-姓名首字母简拼 进行命名,最终合并到 Dev 、Release分支。比如我们要在下一个版本增加功能1、功能2、功能3。那么我们就可以起三个feature 分支:feature-1-zxz,feature-2-qxh,feature-3-sq。(feature 分支命名最好能够自解释,1、2、3 这并不是一种好的命名)随着我们开发,功能1和功能2都被完成了,而功能3因为某些原因完成不了,那么最终 feature-1-zxz 和 feature-2-qxh 分支将被合并到 Dev 分支,而 feature-3-sq 分支将延期继续进行本地开发工作,功能1和功能2测试完没有问题后,将 feature1 和 feature2 分支将被合并到 Release 分支,最终将 Release 分支合并到 Master 分支。
2、Hotfix 分支
顾名思义,hotfix 分支用来修复线上 bug。当线上代码出现 bug 时,我们基于 Release 分支开一个 hotfix 分支,以 hotfix-功能名-姓名首字母简拼(例如:hotfix-model-base-zxz),修复 bug 之后再将 hotfix 分支合并到 Release 分支,同时 Dev 分支作为最新最全的代码分支,hotfix 分支也需要合并到 Dev 分支上去,同时在不同分支对应的不同环境进行bug回归验证,最终将 Release 分支合并到 Master 分支,进行线上发布即可。
五、注意事项
1、 Feature 分支、Hotfix 分支合并到 Dev 分支,测试通过后,需再合并到 Release 分支,这时候就要求代码合并时需清楚的知道此代码是否已经经过验证。
2、 Dev、Release、Master分支的同步
Release 分支合并到 Master 分支后,若Dev分支无正在测试的功能,建议定时将 Dev、Release、Master 分支进行代码同步。
通过以上分支管理,我们就可以轻松做到:团队成员之间功能并行开发、功能选择性发布、版本发布、线上问题紧急功能开发、紧急问题修复等。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
关于接口可维护性的一些建议 | 京东云技术团队
作者:D瓜哥 在做新需求开发或者相关系统的维护更新时,尤其是涉及到不同系统的接口调用时,在可维护性方面,总感觉有很多地方差强人意。一些零星思考,抛砖引玉,希望引发更多的思考和讨论。总结了大概有如下几条建议: 在接口注释中加入接口文档链接 将调用接口处写上被调用接口文档链接 将接口源代码发布到私服仓库 对于状态值常量,优先在接口参数类或者返回值类中定义 如果使用 Map 对象作为传输载体,要提供 Key 值定义常量 针对 Map 返回值,可以考虑使用将 Map 转化成对象 尽可能简化接口依赖 只传递必要字段,尽量避免大而全的接口 将接口的参数和返回值原始数据打印到日志中 将 RPC 接口的类名及方法打印到日志中 核心思想:以人为本,就近原则,触手可及 下面,D瓜哥对每一条建议做一个详细说明。 1. 在接口注释中加入接口文档链接 在做接口开发时,无论是对自有接口的升级改造,还是针对外部接口的从头接入,都涉及到接口文档。不同之处是,前者的工作重点是书写或者更新接口文档;而后者是根据接口文档开发合适的接入代码。但是,经常遇到的一个麻烦是,找不到接口文档。在组内需要找老同事询问;如果是跨部门,还...
- 下一篇
楠姐技术漫话:图计算的那些事 | 京东云技术团队
不知道大家在平时的工作中 有没有听说过“图计算”这个名词 但大家一定在各工作汇报,技术分享中听说过“智能化”,“人工智能”这样的字眼 而我们今天要唠的这个图计算 就是人工智能领域内近几年炙手可热的前沿宠儿 也是我们风控反欺诈中常用的“大杀器” 在了解图计算之前 首先得了解什么是“图” 我们今天所说的图 其实是用于表示对象之间关联关系的一种数据结构 具有很强的抽象性和灵活性 在结构和语义等方面具有很强的表示能力 正是由于图结构丰富的表现力 在现实生活中有很多可以表示为“图”的例子 例如社交网络、道路网、金融交易等 研发或者算法相关的小伙伴们都知道 我们常用的机器学习和深度学习算法 大多都是用于处理一些规整、有序,或者结构化的数据 比如矩阵、图片、文本、序列等 且所处理的数据都是被假设是独立同分布的 然而图上的节点都是自然相连 这也就表明节点之间不是独立的 此时,今天我们要提的图计算就来了 它的核心正是为了将数据建模为图结构 并解决如何将问题解法转化为图结构上的计算问题 当算法任务涉及到多个体之间关联分析时 图计算往往能够使得问题能很自然地表示为一系列对图结构的操作和计...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19