【Git】分支管理

【Git】分支管理

【一】分支策略

【1】分支结构

java 复制代码
main (或 master)    - 生产环境代码,永远稳定
  ↑
release/*          - 预发布分支,用于测试和修复
  ↑
develop           - 开发主分支,集成功能
  ↑
feature/*         - 功能分支
hotfix/*          - 热修复分支
bugfix/*          - 缺陷修复分支

【2】分支类型说明

(1)release分支

用于归并已发布已稳定的代码

(2)develop分支【来自release】

用于合并已测试待发布的代码

(3)feature分支【来自develop】

用于开发新功能,指明功能信息,开发中测试中的代码

(4)hotfix分支【来自develop】

用于生产紧急修改,从release切出,开发完后要合并到上述所有分支

(5)bugfix分支【来自develop】

用于修复缺陷,开发完要合并到所有feature功能分支

java 复制代码
# 主分支
main/master       - 保护分支,只能通过PR合并
develop          - 保护分支,日常开发集成

# 功能分支(从develop创建)
git checkout -b feature/user-authentication develop
git checkout -b feature/payment-integration develop

# 热修复分支(从main创建,用于生产紧急修复)
git checkout -b hotfix/critical-security-fix main

# 发布分支(从develop创建)
git checkout -b release/v1.2.0 develop

【二】版本管理策略

【1】语义化版本控制(SemVer)

java 复制代码
// 版本格式:主版本号.次版本号.修订号
版本号:1.2.3
- 1: 主版本号 - 不兼容的API修改
- 2: 次版本号 - 向下兼容的功能性新增
- 3: 修订号   - 向下兼容的问题修正

【2】Maven项目版本配置

xml 复制代码
<!-- pom.xml -->
<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.yourcompany</groupId>
    <artifactId>your-service</artifactId>
    <version>1.2.3</version>
    
    <!-- 使用properties管理依赖版本 -->
    <properties>
        <java.version>17</java.version>
        <spring-boot.version>3.2.0</spring-boot.version>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>
</project>

【三】完整的开发工作流示例

【1】新功能开发流程

(1)从develop创建功能分支feature

(2)新功能提交到feature

(3)将测试完的feature代码合到develop

(4)发布上线从develop拿包

java 复制代码
# 1. 从develop创建功能分支
git checkout develop
git pull origin develop
git checkout -b feature/user-management

# 2. 开发并提交(遵循约定式提交)
git add .
git commit -m "feat: 添加用户权限管理功能
- 实现RBAC权限控制
- 添加用户管理API
- 编写单元测试"

# 3. 推送到远程
git push -u origin feature/user-management

# 4. 创建Pull Request到develop分支

【2】发布流程

java 复制代码
# 1. 创建发布分支
git checkout develop
git checkout -b release/v1.3.0

# 2. 更新版本号(Maven示例)
mvn versions:set -DnewVersion=1.3.0
git add pom.xml
git commit -m "chore: 发布版本v1.3.0"

# 3. 合并到main和develop
git checkout main
git merge --no-ff release/v1.3.0
git tag -a v1.3.0 -m "Release version 1.3.0"

git checkout develop
git merge --no-ff release/v1.3.0

# 4. 删除发布分支
git branch -d release/v1.3.0

【四】Git提交信息规范

【1】约定式提交(Conventional Commits)

java 复制代码
feat: 添加用户注册功能
fix: 修复登录验证漏洞
docs: 更新API文档
style: 代码格式调整
refactor: 重构支付模块
test: 添加用户服务测试
chore: 更新依赖版本

【2】提交模板配置

java 复制代码
# ~/.gitmessage 创建提交模板
feat: [简要描述]

[详细描述修改内容]

[关联的Issue编号,如:Fix #123]

【五】管理周期

(1)分支生命周期要短:功能分支应在1-2周内完成

(2)频繁合并:定期将develop合并到功能分支,减少冲突

(3)代码审查:所有PR必须经过审查

(4)自动化测试:CI/CD流水线必须包含测试环节

(5)版本追溯:每个生产版本都要打标签

相关推荐
甲虫机1 小时前
git 常用命令
git
安果移不动1 小时前
【Git实战】记录一次分支切换失败的排查:Submodule 脏状态与强制切换
git
痕忆丶2 小时前
git 软重置的使用场景git reset --soft HEAD~1
git
杰瑞学AI3 小时前
在Git的缩写哈希中踩的坑
git
dragoooon344 小时前
[Linux网络基础——Lesson9.「TCP 全连接队列与 tcpdump 抓包」]
前端·git·github
大、男人5 小时前
分享一个git设备代理的方法
git
悟悟悟!5 小时前
git使用笔记:git日常工作流和命名规范
笔记·git·elasticsearch
漏洞文库-Web安全5 小时前
CTFHub 信息泄露通关笔记9:Git泄露 Index - 指南
笔记·git·安全·web安全·elasticsearch·网络安全·ctf
weixin_307779135 小时前
深度解析 Jenkins Git Client 6.4.0 插件:核心功能、应用场景与最佳实践
运维·git·架构·jenkins