Git分支管理介绍
分支管理
软件的版本控制以及分支管理贯穿于整个软件产品的生命周期,日常的项目管理对于开发团队能否有节奏且顺利的交付软件也很重要。本分支管理和版本控制规范主要分为3个部分,即分支管理规范、版本号规范、需求与代码关联。其中,将阐述不同的分支管理模型,以及它们的优缺点和使用的场景;描述版本号控制方式——语义化版本;以及将需求与代码管理的必要性等。
分支管理规范
目前比较流行的分支管理模型有三个,即GitFlow、GitLabFlow、GitHubFlow。下面将介绍这三种分支模型的原理,使用场景和优缺点等。
GitFlow
GitFlow是最早诞生并得到广泛应用的一种工作流程。
该模型中存在两种长期分支:master和develop。master中存放对外发布的版本,只有稳定的发布版本才会合并到master中。develop用于日常开发,存放最新的开发版本。
也存在三种临时分支:feature,hotfix,release。
feature分支是为了开发某个特定功能,从develop分支中切出,开发完成后合并到develop分支中。
hotfix分支是修复发布后发现的Bug的分支,从master分支中切出,修补完成后再合并到master和develop分支。
release分支指发布稳定版本前使用的预发布分支,从develop分支中切出,预发布完成后,合并到develop和master分支中。
优点:
feature分支使开发代码隔离,可以独立的完成开发、构建、测试
feature分支开发周期长于release时,可避免未完成的feature进入生产环境
缺点:
无法支持持续发布。
过于复杂的分支管理,加重了开发者的负担,使开发者不能专注开发。
GitHubFlow
GitHubFlow分支模型只存在一个master主分支,日常开发都合并至master,永远保持其为最新的代码且随时可发布的。
在需要添加或修改代码时, 基于master创建分支,提交修改。
创建Pull Request,所有人讨论和审查你的代码。
然后部署到生产环境中进行验证。
待验证通过后合并到master分支中。
这个分支模型的优势在于简洁易理解,将master作为核心的分支,代码更新持续集成至master上。根据目前收集到的反应来看,得到了更多的好评,认为GitHubFlow分支模型更加轻便快捷。
GitLabFlow
GitLabFlow是GitFlow和GitHubFlow的结合,它吸取了两者的优点,既有适应不同开发环境的弹性,又有单一主分支的简单和便利。
该模型采取上游优先的原则,即只存在一个master主分支,它是所以分支的上游。只有上游分支采纳的变动才能应用到其他分支。
对于持续发布的项目,建议在master之外再建立对应的环境分支,如预生产环境pre-production,生产环境production。
对于版本发布的项目,建议基于master创建稳定版本对应的分支,如stable-1,stable-2。
分支命名规约
前缀 含义
master 主分支,可用的、稳定的、可直接发布的版本
develop 开发主分支,最新的代码分支
feature-** 功能开发分支
bugfix-** 未发布bug修复分支
release-** 预发布分支
hotfix-** 已发布bug修复分支
提交命名规约
除了分支的名称需要规范,提交的命名也同样如此。
格式为:[操作类型]操作对象名称,如[ADD]readme,代表增加了readme描述文件。
常见的操作类型有:
[IML] 实现正在开发的功能
[UPDATE] 更新或改善已经实现的功能
[FIX] 修复BUG
[REF] 重构一个功能,对功能重写
[ADD] 添加实现新功能
[DEL] 删除不需要的文件
版本号规范
版本格式:主版本号.次版本号.修订号,版本号递增规则如下:
1.主版本号:当你做了不兼容的 API 修改。
2.次版本号:当你做了向下兼容的功能性新增。
3.修订号:当你做了向下兼容的问题修正。
先行版本号及版本编译信息可以加到“主版本号.次版本号.修订号”的后面,作为延伸。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
2018-01-31 LindDotNetCore~Ocelot实现微服务网关
2018-01-31 微服务~Consul服务注册与发现
2013-01-31 EF架构~系列目录
2013-01-31 EF架构~为EF DbContext生成的实体添加Display特性
2013-01-31 基础才是重中之重~隐藏应该隐藏的对象
2012-01-31 根据特殊实体业务,实现自定义排序