Git进阶(十七):特性分支
文章目录
- 一、前言
- 二、特性分支策略
- 三、特性分支权限管控
- 四、特性分支命名
- 五、变基与合并
- 六、分支清理
- 七、落地实践
- 八、延伸阅读
一、前言
Git是目前流行的分布式版本控制系统。每个人的clone的副本都是一个完整的存储库。
Git 仓库分为两种:
-
本地仓库:开发人员自己电脑上的Git仓库。
本地仓库分工作区、暂存区、版本库。 -
远程仓库:远程服务器上的Git仓库
常用命令:
git status
:查看文件状态。git add
:将文件的修改加入暂存区。git reset
:将暂存区的文件取消暂存或者是切换到指定版本。git commit
:将暂存区的文件修改提交到版本库。git push
:推送,将本地仓库文件和版本信息上传到远程仓库。git log
: 查看日志。git pull
:拉取,将远程仓库文件和版本信息下载到本地仓库。
分支是Git使用过程中非常重要的概念。使用分支意味着我们的工作可以从开发主线上分离开来,以免影响开发主线。
并行不同时间交付版本的任务时,同一个仓库可以有多个分支,使团队并行开发,各个分支相互独立,互不干扰。
使用主干分支模式的不足?
-
提交频繁,冲突多,主干代码不稳定,一旦出现问题,其他人同步代码之后,所有工作被阻塞。
-
也存在开发未完成的代码或者临时代码,因自查或自测不充分,提交到主分支,质量无法保证。
二、特性分支策略
采用“分支开发,主干发布”的特性分支开发策略。
- Master:用于生产版本的发布。
- Release:用于功能版本的发布。
- Develop:用于开发环境的版本发布,是迭代开发的主干分支。
- Feature:用于特性功能开发,即特性分支。
- Fix:专门用于Bug修复的分支。
三、特性分支权限管控
为了保证分支策略的落地实施,版本管理员对Master、Release、Develop分支设置为保护分支,仅允许开发人员通过发起代码合并请求修改,而Feature、Fix分支,不设限制,允许开发人员直接进行代码推送,这样既保证了重要分支的稳定性,同时也保证了开发的灵活性。
通过权限控制,限制开发人员修改批次主干分支代码,只能通过特性分支进行合并;在特性分支开展必须的控制活动,通过质量门禁的完整性、 合规性检查后合并到主分支,有利于提高源码质量,保持版本稳定。
四、特性分支命名
- Master:用于生产版本的发布,保持默认分支名称。
- Release分支:批次_Release,例如:2411_Release。同批次正式版本提交时间相同合并,2411_日期_Release。
- Develop分支:批次_Develop,例如:2411_Develop。同批次多任务并行, 2411_任务编号_Develop。
- Feature分支: feat/批次/任务编号(需求编号)+迭代等可扩展信息/开发人员/日期。
- Fix分支: fix/批次/任务编号+迭代等可扩展信息/开发人员/日期。
分支建立原则:
- Develop分支:通过Master分支进行创建。
- Feature分支:通过Develop分支进行创建。
- Fix分支:功能测试之前发现的问题,通过Develop分支进行创建;功能测试发现问题,通过Release分支进行创建,修复之后,合并回Develop分支。(务必合并回Dev)
五、变基与合并
分支合并或从远程分支拉取最新代码到本地时,使用交基(rebase)命令,或在pull命令后加-r参数。
变基主要优势在于可以获得更干净的项目历史记录,这会使得后续在查看提交历史时,不会被冗余繁杂的提交历史线干扰,提升团队整体认知成本。
变基适合需要一个干净、线性历史的情况,而合并则更适合需要保留完整历史记录和直观提交历史的情况。
选择哪种方法取决于项目需求和团队的工作流程。
六、分支清理
Git需要及时清理分支的原因主要包括保持仓库整洁、避免混淆和提升团队协作效率。
1、投产稳定后:将Release分支合并到Master,删除已投产的Develop分支、Release分支。
2、Feature分支完成任务或者故事开发,并已成功合并到开发分,删除feature分支。
3、fix分支,完成问题修复,提交功能测试版本之后,删除分支。
七、落地实践
八、延伸阅读
- 《Git进阶(十一):Git 常用操作汇总》
- 《Git进阶(二):git revert 用法》