当前位置: 首页 > news >正文

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 用法》

http://www.mrgr.cn/news/63211.html

相关文章:

  • chrome编辑替换js文件的图文教程
  • Redis高级篇之bigKey理论介绍以及优化
  • 【flink】之新版本kafka到kafka
  • java访问华为网管软件iMaster NCE的北向接口
  • Rust:文档注释 //! 和 ///
  • HTML5 + CSS3 + JavaScript 编程语言学习教程
  • 用二维码展示信息,有哪些常见应用场景
  • Idea常用插件
  • 2025 年IT技术人员关键技能(非常详细),零基础入门到精通,看这一篇就够了
  • Go使用SIMD指令——以string转为整数为例
  • netty之bootstrap源码分析
  • Android 中选择本地文件并获取文件路径
  • BC1 2充电协议简介
  • JS进阶级案例-----时钟
  • Python零基础 [2.3] if else 语句的详解与示例
  • 《PHP爬虫:当“购物狂”遇上“代码诗人”》
  • 算子级血缘助企业数据管理“自动化、精细化、智能化”
  • Redis 中的定期删除和惰性删除究竟是怎样实现的?
  • flutter报错‘/Users/xxx/.gradle/caches/journal-1/file-access.bin‘.
  • 用图像增强来充实训练数据集,算不算是一种‘摸鱼’的方法?
  • 大型语言模型如何影响就业?大模型入门到精通,收藏这篇就够了
  • 初学者如何对大模型进行微调?
  • Openlayers高级交互(14/20):汽车移动轨迹动画(开始、暂停、结束)
  • 页面跳转不刷新 histoy.go hisroty.back不生效
  • Consul 实战指南
  • 【JVM详解JVM优化】JVM内存模型