分支定义与作用:

主干分支:
origin/master:总是代表了生产环境准备就绪的状态的主分支 ,必须保证与生产环境在正常运行的代码一致。(每次需求上线验收完成后,由开发负责人从dev或Hotfix分支合并至master,其他分支代码严禁直接合并到master分支),每一次上线完成后的合并归档操作都需要打tag

origin/develop:最后一次交付的可以赶上下一次发布的状态的主分支。当develop 分支上的代码已实现了软件需求说明书中所有的功能,通过了所有的测试并成功上线至现网且代码已经足够稳定时,就可以将dev合并归档至 master 分支。

辅助分支:
feature:新功能开发分支,功能上线后删除,命名规则(feature/版本号(日期)/功能说明(英文)-author) feature要从develop分支拉出,需求开发完成测试通过,确认可正常上线后,代码必须及时合并回 develop 分支。
(严格按规范来说feature分支不能用于上线时的出包编译分支,而是需要在release分支进行上线出包。但由于许多项目组习惯简化流程,该分支也会直接作为上线打包的分支,去掉了release分支的使用,那么此情况下,feature分支发布时要打tag,且必须保证上线时最新的dev代码有合并到待上线的feature分支上,因为feature功能分支开发中可能有其他需求分支上线完成后合并更新了dev分支。具体操作见下文)

release:feature分支测试通过准备正式发布时,用于辅助版本发布的分支,命名规则(release/版本号(日期)/release名称) ,release要在本次需要上线的版本feature功能全都合并到develop后,从develop拉出,后续灰度或者现网的验收测试的小bug直接在release改,正式发布上线验收完成后需release合并回develop,dev再合并回master;(发布要打tag)

hotfix:现网补丁分支,命名规则(hotfix/版本号(日期)/补丁说明(英文)--author) hotfix要从master的tag出,修复bug后合并回master、develop,当时如果还有待上线的release也要合并回该release分支。

具体开发代码管理流程:

1. 新需求开发与测试

有新的需求或功能点需要开发时, 从最新develop分支中拉出一个feature分支
>> git checkout -b [feature name]
完成feature开发后,在该分支进行提测,测试与修复bug在该分支完成。

2. 版本上线

feature分支提测完成后,将feature分支合并回develop准备上线。
>> git checkout develop
>> git merge [feature name]
此时develop分支已经达到了一个可以发布的状态,将最新的develop分支拉出来成为一个release分支。(注意:release分支创建后到上线前这段时间内,发现bug后的修复需要在原先的feature分支上进行修复与提测,测试完成后再从feature分支合并至develop分支,然后develop分支合并至release分支),正式上线时从release分支最新的代码处打上发布tag,进行打包出包部署至灰度或现网环境,进行验收测试
>> git checkout -b release
如验收测试时有小bug需要修复,这时直接在release分支下进行修复演进。如果验收完成上线成功,则需要将release分支合并入develop分支,然后develop分支再合并入master分支,master保持现网最新代码状态,develop分支供下次开发演进。
>> git checkout develop
>> git merge [release name]
>> git checkout master
>> git merge [develop]
如果bug问题很大,当天无法处理完成需要延期上线,则需要将现网代码回滚至master分支状态,把当前release并入develop中,从develop拉出新的feature进行开发重构。重复1,2步骤再次进行版本上线。

3. 处理冲突

当合并分支出现冲突时,需要手动将文件冲突的部分进行修改(开发工具一般都带有辅助合并的功能,比对与处理合并很便捷,具体操作方式按各自开发工具自行百度)。对修改后的文件保存并重新提交。

4.不使用release分支的操作流程

如果简化代码管理流程,不使用release分支时,按照步骤1完成开发与提测后。
版本上线操作为:
将dev分支最新代码合并到feature分支,保证feature分支包含全部已上线版本代码。
在feature分支最新代码处打上发布tag,进行打包出包部署至灰度或现网环境,进行验收测试。
验收测试时的bug直接在feature分支进行修复。
验收完成上线成功后,将feature分支代码合并回develop分支,然后develop分支再合并入master分支,master保持现网最新代码状态,develop分支供下次开发演进。

5. 线上bug热修复

当碰到一些线上意想不到的bug,需要紧急修复时,就直接从master分支拉出hotfixes分支进行修复。
>> git checkout master
>> git checkout -b [hotfix name]
bug修复完毕,打上发布tag,再该分支直接出包部署,上线测试验收通过后我们需要将分支合并到master和develop中去,当时如果还有待上线的release也要合并到该release分支。
>> git checkout develop
>> git merge [hotfix name]
>> git checkout master
>> git merge [hotfix name]

6.特殊情况下的处理

如果有多个不同的feature分支需要同时进行提测与上线。
可在提测前依次将这些feature分支合并回develop分支,分别处理好合并后的冲突。
将develop分支变为多个需求合并后的版本状态后。
直接在develop分支进行合并版本的提测,测试出来的bug在各自的feature分支进行修复与代码提交,然后再合并到develop分支。
测试完成后此时develop分支已经达到了一个可以发布的状态。

此时可直接按照步骤2进行release分支的创建与出包发布上线流程。

如无release分支的流程则可以直接在develop分支打上发布tag并且进行打包出包部署上线操作,验收测试的bug直接在dev分支进行修复。最终验收上线完成后,将dev分支代码合并至master,结束流程。

7.上线完成后的收尾操作

版本需求上线验收完成,代码已归档至master后。feature分支删除。release分支保留(每一次版本上线的记录)。hotfix分支删除。保证git分支树的简洁性。

最后,代码管理也需要养成良好的习惯。
完成一部分功能点后及时提交至远程仓库,代码提交的频率不要太低。
每次提交/合并或其他操作时,都先进行一下pull操作,有冲突及时处理。

Git代码管理与发布流程相关推荐

  1. Git 代码管理(代码提交和代码回退)

    Git 代码管理(代码提交和代码回退) Git的主要功能是代码管理,版本管理,分支管理. 在远程代码管理平台上,项目的代码被管理在一个远程代码仓库中,在本地,代码保存在一个本地代码仓库中.通过Git, ...

  2. GIT代码管理-SourceTree工具

    前言 本文主要介绍SourceTree工具在开发过程中的日常代码管理相关操作,此工具作为GIT代码管理的可视化工具使用. 准备工作 在使用SourceTree工具前需要先安装GIT,同时将代码由远程仓 ...

  3. Git—代码管理、提交及冲突解决流程的思考

    1 代码管理   Git不多说,大家都知道这是一个分布式版本控制系统,对开发者而言,可以敏捷高效的进行代码管理及开发,也非常适合多人协作.话不多说,下面就来点干货. 1.1 创建新仓库   我们在工作 ...

  4. Git代码管理流程(分支、fork、tag)

    我们使用Git做代码管理时,经常会出现这种情况:项目需要稳步迭代升级(暂且叫做标品)的同时,定制化的需求接憧而至.然而定制化内容(不属于正常迭代升级的范围),我们该如何处理?下述如我想到的几种方式: ...

  5. Git——代码管理工具

    摘要 Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.Git 是 Linux 内核开发而开发的一个开放源码的版本控制软件.Git 与常用的版本控制工具 CVS, Subv ...

  6. Git代码管理常用命令操作

    一.Git提交代码过程 安装好Git,连接远程仓库地址,拉取代码到本地分支master,根据本地分支master创建分支b,修改完毕后,可以commit到本地分支b,之后可以提交到远程仓库地址,若没有 ...

  7. [Git] 代码管理之 Git(一)Git 入门

    Git 简介 当我们开发一个产品的时候.所有的代码并不是一气呵成全部一次性完成的,肯定是经过多个步骤,大项目甚至会多人好几个月甚至几年共同开发而成的,而这个过程中,我们的代码要形成很多个版本,好比(图 ...

  8. SVN代码管理协同开发流程

    SVN作为一个老牌的代码管理工具,现在依然有很多团队在使用.本文主要通过SVN的分支管理用于规范项目团队中的代码开发流程. 一.SVN协同开发示意图: 图中有两条代码线 trunk 和 online, ...

  9. 海量数据大课学习笔记(6)-短链平台项目创建+git代码管理+开发分层规范讲解--小滴课堂

    文章目录 前言 第1集 短链平台实战-Maven聚合工程创建微服务项目 第2集 Gitee仓库介绍和项目纳入版本管理+ignore文件配置 第3集 阿里编码规范里面Manager分层介绍-和开发规范说 ...

最新文章

  1. HSV RGB颜色空间互转
  2. Smoke Test与Ad hoc Test
  3. qemu debug linux内核,qemu调试linux内核
  4. 《微服务设计》(三)---- 集成
  5. 实战_06_SpringBoot整合redis-cluster集群版本
  6. NHibernate学习之基础配置
  7. 万事达卡:公共与私营部门通力合作对于创建智慧城市有重要意义
  8. Educational Round 26 C. Two Seals
  9. const int *p和int *const p的区别
  10. Shell之date用法
  11. 多光谱、高光谱与雷达数据等产品级划分标准
  12. bjui 公共的弹窗确认 取消 改变文字
  13. 无损检测技术知识大全
  14. 团队管理经典书籍推荐:《团队管理必读12篇》
  15. 如何把汉字生成拼音首字母
  16. 矩阵论笔记(七)——矩阵的微分和积分
  17. 曾经被微软视为毒瘤的“开源”,现在却成了“宠儿”
  18. Vector诊断系统开发流程及其工具链
  19. echarts3实现世界地图
  20. 联想服务器安装系统蓝屏怎么办,联想笔记本u盘装系统出现蓝屏怎么解决

热门文章

  1. CentOS+Jenkins+docsify
  2. Zernik矩亚像素边缘检测
  3. python面对对象建立自己的电子宠物的编码_一种基于Kinect技术的电子宠物的制作方法...
  4. python flask+apscheduler定时任务导致数据重复和错误
  5. post json数据
  6. Leaflet + eegeo.js 构建三维世界
  7. 一个意外错误使你无法删除该文件夹。【错误0x80070091:目录不是空的】Bandizip压缩软件解决方法
  8. 解决无线网卡断线两绝招!
  9. html颜色代码暗黑模式,html如何实现暗黑模式
  10. 路由传参的几种方式(含params、query)