首页 > 其他分享 >Git分支管理

Git分支管理

时间:2024-12-22 21:45:21浏览次数:8  
标签:Git 管理 feature master test commit 分支

为什么需要分支管理?

开发效率

  • 统一的分支管理避免混乱
  • 明确的开发流程减少沟通成本
  • 新人容易理解和快速上手

优化CICD流程

  • 分支策略配合自动化部署
  • 自动化测试和构建更可靠

减少代码冲突

  • 规范的分支创建和合并流程
  • 明确的职责划分减少冲突

常见Git分支管理方案对比

GitFlow

image

master    - 产品分支
develop   - 开发主分支
feature/* - 功能分支
release/* - 发布分支
hotfix/*  - 紧急修复分支

GitHub Flow

image

main      - 主分支
feature/* - 功能分支

GitLab Flow

image

production - 生产环境
main       - 主分支
develop    - 开发分支
feature/*  - 功能分支

Trunk Based

image

main      - 主干分支
feature/* - 短期特性分支

Ali AoneFlow

image

image

image

Tripo Backend 分支管理方案

我们现在的团队有什么特点?

  1. 成员数量较少
  2. Commit频率中等
  3. Code Review习惯

基于以上几个特点, 我们姑且命名这样一种开发方式: TripoFlow, 这里的Tripo指代的master​-feature​-env​三种类型分支

  • master​是主干分支, 是feature​分支的from​.
  • feature​是功能分支, 也是开发人员最常接触的分支, feature​分支最终合入master​分支
  • env​是环境分支, 每一个分支都和一个环境对应 (线上除外)

示意图

gitGraph commit id: "init" branch feature/login branch env/test checkout feature/login commit id: "开发功能" checkout env/test merge feature/login checkout main merge feature/login branch release/v1.0.0 commit id: "发布准备" commit id: "修改Version, Build" checkout env/test commit id: "rebase master"

开发流程

  1. master​拉取feature​分支
  2. 开发, commit在feature​分支, 请注意经常性的rebase master
  3. 测试, 将feature分支的代码, cherry-pick​到test​分支, CICD​自动打包部署
  4. 测试通过, PR​到master​, 找同事review
  5. PR​通过, 开发结束.

上线流程

敏捷上线

  1. master​打上版本Tag
  2. Push Tag
  3. CICD自动打包
  4. 手动部署, 观察log

版本迭代

  1. master​的拉出一个临时分支release​, 在某个commit​打上版本Tag
  2. CICD​自动打包
  3. 手动部署, 观察log
  4. 删除Release

HotFix

  1. 拿到线上tag的commit​, 基于此commit​新建分支hotfix
  2. CP​test进行测试, 没问题重打Tag,
  3. master​分支拉出hotfix​分支, Push​ Remote, 自动打包.
  4. 修复完成, 将commitPR到master
  5. PR通过, 完成修复

One More Thing: 什么是一个好的Commit?

Commit Guidlins

我将帮您将这份文档改编为一个通用的Git提交规范指南。以下是翻译和改编后的版本:

Git提交规范指南

提交消息格式

每个提交消息包含标题、正文和页脚三个部分。其中标题部分采用特殊格式,包含类型(type)、作用域(scope)和主题(subject):

<type>(<scope>): <subject>
<空行>
<body>
<空行>
<footer>

标题部分是必需的,而作用域是可选的。

提交消息的任何一行都不应超过100个字符!这样可以确保消息在GitHub以及各种Git工具中都能够方便地阅读。

类型(Type)

必须是以下类型之一:

  • feat​: 新功能
  • fix​: 修复bug
  • docs​: 仅文档变更
  • style​: 不影响代码含义的变更(空格、格式化、缺失分号等)
  • refactor​: 既不修复bug也不添加新功能的代码变更
  • perf​: 提升性能的代码变更
  • test​: 添加或修正测试代码
  • chore​: 构建过程或辅助工具的变更

作用域(Scope)

作用域用于说明提交影响的范围。例如可以是模块名称、包名称、或者其他有意义的分类名称。

当变更影响多个作用域时,可以使用 *​。

主题(Subject)

主题是对变更的简洁描述:

  • 使用祈使句、现在时态:"change"而不是"changed"或"changes"
  • 首字母不要大写
  • 结尾不要加句号

正文(Body)

与主题一样,使用祈使句、现在时态。正文应该包含变更的动机,并与之前的行为进行对比说明。

页脚(Footer)

页脚部分应当包含任何与Breaking Changes(破坏性变更)相关的信息,同时也可以在这里引用与本次提交相关的Issue编号。

Breaking Changes应该以BREAKING CHANGE: ​开头,后面跟一个空格或两个换行符。剩余的提交消息用于描述变更内容。

示例

feat(auth): 添加用户认证功能

实现基于JWT的用户认证机制,包含以下功能:
- 用户登录接口
- Token生成与验证
- 刷新Token机制

这次更新显著提升了系统的安全性,取代了之前的基本认证方式。

BREAKING CHANGE: 
- 所有API请求现在需要在header中携带JWT Token
- 移除了基本认证支持

Closes #123

标签:Git,管理,feature,master,test,commit,分支
From: https://www.cnblogs.com/pDJJq/p/18622588/git-branch-management-zbc4tk

相关文章

  • JavaWeb案例整体分析---》差旅费报销管理信息系统->>题目详情
    题目详情:差旅费报销管理信息系统1、项目背景:随着企业规模的扩大和业务的复杂化,报销管理成为了企业日常运营中不可或缺的一环。为了提高效率和减少人力成本,许多企业开始引入报销系统来简化和优化报销流程。为了避免人力物力财力浪费、降低办公成本、提高办事效率,是企业领导关注......
  • 二手物品交易管理系统-毕业设计-附源码
    文末获取源码和万字论文,制作不易,感谢点赞支持。      毕业设计(论文)   题目:二手物品交易的设计与实现摘 要如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端......
  • 项目实施管理方案,软件实施管理办法,平台实施管理细则,实施方案,实施办法(Word原件)
        1项目背景及项目内容1.1项目背景1.2项目内容2技术解决方案2.1与其他业务系统的一体化应用2.2系统数据导入/导出3项目总体设计3.1项目启动阶段3.2软件开发阶段3.3上线准备和投产阶段3.4系统测试阶段3.5项目实施与推广阶段3.6系统......
  • springboot毕设校园食堂订餐管理系统论文+程序+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着高校的不断发展,校园规模持续扩大,学生数量日益增多,校园食堂作为师生就餐的主要场所,面临着巨大的管理挑战。传统的食堂管理方式在现代校园环境......
  • springboot毕设民宿管理系统程序+论文+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着旅游业的蓬勃发展,民宿作为一种独特的住宿形式受到了越来越多游客的青睐。民宿以其个性化、温馨舒适的居住环境区别于传统酒店,满足了游客对于......
  • java + mysql 023Java+学生宿舍管理系统的设计与开发录像(完整源码 + 说明文档 + 演示
     ......
  • java + mysql 024Java+基于SpringBoot的企业客户管理系统录像(完整源码 + 说明文档 +
     ......
  • 高新技术企业知识管理新篇章:高效内部知识库建设
    高新技术行业作为经济发展的重要引擎,其创新能力和发展速度直接关乎国家的整体竞争力。然而,在快速发展的背后,高新技术企业面临着知识管理不善、信息共享不畅等挑战。为了应对这些挑战,高效搭建内部知识库显得尤为重要。本文将以Helplook工具为例,探讨如何高效构建高新技术企业内部知......
  • 第十一章:DevSecOps持续安全性管理
    DevSecOps持续安全性管理一、概述1.设计目标本文档旨在设计一个全面的DevSecOps安全管理体系,通过"安全教育"、"通过设计保证安全"和"安全自动化"三个维度,实现软件开发全生命周期的安全保障。根据NIST统计,在发布后执行代码修复,其修复成本相当于在设计阶段执行修复的30倍......
  • 第七章:应用部署发布管理
    应用部署发布管理一、系统架构设计1.部署整体架构说明部署应用采用分层架构设计,主要分为四个层次:用户层Web控制台:提供图形化操作界面,支持应用管理、部署配置等功能CLI工具:命令行工具,支持脚本化操作和自动化集成API接口:提供标准RESTAPI,支持第三方系统集成接入层AP......