【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的安装以及基本命令使用、远程仓库的操作、vscode连接远程仓库进行项目的上传、gitee的使用
linux·git·gitee
kyriewen11 小时前
Git Commit 前自动修复代码风格?配置 Husky + lint-staged,从此 CR 只聊逻辑
前端·git·面试
吹牛不交税20 小时前
visualstudio把项目绑定git仓库
git
c2385620 小时前
git常见错误和ssh验证推送
运维·git·ssh
火山上的企鹅20 小时前
Codex实战:APP远程升级服务搭建(四)Node 服务端自动识别 APK 信息
android·服务器·git·github·qgc
徐子元竟然被占了!!1 天前
Git学习
git·学习·elasticsearch
l1o3v1e4ding1 天前
windows安装Claude Code,并接入Deepseek-v4模型 ,提供离线安装包
git·npm·node.js·claude code·cc-switchcc
Dontla1 天前
git bash打开Claude code报错:Claude Code on Windows requires git-bash.(别把git装其他位置,严格按照默认安装)找不到claude code
windows·git·bash
一个梦醒了1 天前
安装git bash选项推荐
开发语言·git·bash
呆萌的代Ma2 天前
Git不强行推送,撤销最近几次的提交
git