Git 代码分支管理 | 京东云技术团队

京东云开发者
• 阅读 388

作者:京东科技 周新智

一、引言

近日,IoT 研发团队加入了不少新同学,对 git 分支的命名和管理方式有些许的模糊,分支的命名规范以及管理方式对项目的版本发布至关重要,为了解决实际开发过程中版本发布时代码管理混乱、冲突等比较头疼的问题,我们将在文中阐述如何更好的管理代码分支。

二、总览

Git 代码分支管理 | 京东云技术团队

从上图可以看到主要包含下面几个分支:

• master: 主分支,也称为线上分支,主要用来版本发布。

• dev:日常开发分支,该分支正常保存了开发的最新代码。

• release:release 分支可以认为是 master 分支的测试版。比如说某个新增功能开发完成、线上问题紧急修复完成,那么就将 feature/hotfix 分支合并到 release 分支,到了发布日期就合并到 master 分支,进行版本发布。

• feature:具体的功能开发分支。

• hotfix:线上 bug 修复分支。

三、主分支

主分支包括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 分支进行代码同步。

通过以上分支管理,我们就可以轻松做到:团队成员之间功能并行开发、功能选择性发布、版本发布、线上问题紧急功能开发、紧急问题修复等。

点赞
收藏
评论区
推荐文章
放学路上 放学路上
2年前
git常见合并冲突场景以及解决办法
git很好用,但是遇到合并冲突就会很痛苦!在此之前我一直都是个人开发者,因此对git的使用也不熟悉,本文将持续总结我在使用git合并过程中遇到的冲突的场景以及产生冲突后的解决办法。如果有不足的的地方还请各位大佬指正!一、第一种情况1、场景描述:当两人都拉取了同一个分支的代码,然后两人都对代码进行了修改,假设其中一人把他修改完的代码上传到master分支,这时
Stella981 Stella981
3年前
Git 使用教程—以 GitLab 上的 Django 项目为例
一、代码提交流程1\.clone代码到本地有两个命令,第一个是clonemaster主分支代码,第二个是clone某个branch分支代码。团队项目开发中,我一般是clone别人分支代码进行整合,master主分支代码很少动。gitclonehttp://www.xxx.xxx.git
Stella981 Stella981
3年前
Git commit message和工作流规范
作者:程柳锋目的统一团队Gitcommit日志标准,便于后续代码review,版本发布以及日志自动化生成等等。统一团队的Git工作流,包括分支使用、tag规范、issue等Gitcommit日志参考案例angular(https://www.oschina.net/action/GoToL
Stella981 Stella981
3年前
GitFlow原理浅析
一、Git优点分布式存储,本地仓库包含了远程仓库的所有内容.安全性高,远程仓库文件丢失了也不怕优秀的分支模型,创建/合并分支非常的方便方便快速,由于代码本地都有存储,所以从远程拉取和分支合并时都非常快捷当分支过多时,如何管理这些分支呢?我们团队采用了GitFlow的模式
Stella981 Stella981
3年前
Git代码防丢指南
我们在日常使用Git的过程中经常会发生一些意外情况,如果处理不当,则可能会出现代码丢失的假象。本文将针对IDEA&Git日常开发中的一些场景,为你层层拨开迷雾,解析常见的错误及其发生原因,让你从此不再惧怕代码冲突或丢失问题。为简化问题,本文假设所有团队成员均在同一分支上开发。文中更新操作是指在IDEA中单击菜单VCS\
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Stella981 Stella981
3年前
Git提交规范流程和解决冲突实际使用
前言:GIT对于我们程序员来说是吃饭的工具,本篇主要是针对提交和分支以及对于大多数程序员闻风丧胆的冲突一些个人见解,如果有啥不对的或者你们公司git提交流程欢迎下方评论。在讨论规范之前,我们需要定最基本的要求1.团队内保持良好的代码格式便于易读和维护,最主要减少不必要的代码冲突(建议统一使用开发工具(idea)的代码格式化)。2.提交任何代码必须
小万哥 小万哥
1年前
Git分支教程:详解分支创建、合并、删除等操作
Git是一种强大的分布式版本控制系统,它的分支功能使得团队协作和代码管理变得更加灵活和高效。分支可以让开发人员在不影响主线开发的情况下进行并行开发和实验性工作。本篇博客将详解Git分支的创建、合并、删除等操作,帮助你更好地理解和使用Git的分支功能。分支的
绣鸾 绣鸾
1年前
Fork for Mac(Git客户端)
是一款适用于Mac平台的Git客户端,它提供了一系列强大的功能,包括分支管理、代码比较、合并和冲突解决等。以下是Fork的一些特点和优点:直观的用户界面:Fork具有直观的用户界面和简单易用的操作,可以帮助用户快速地学习和使用Git。分支管理:该软件提供了
小万哥 小万哥
9个月前
Git 分支管理:优化版本控制与应急处理的关键策略
使用Git分支:轻松管理不同版本和应对紧急情况的最佳实践使用Git分支在Git中,分支是主仓库的新/独立版本。假设你有一个大型项目,需要对其进行设计更新。没有使用Git时:复制所有相关文件以避免影响实时版本开始进行设计工作,并发现代码依赖于其他文件中的代码