【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)版本追溯:每个生产版本都要打标签

相关推荐
ss27315 小时前
idea中git更新项目:将传入更改合并到当前分支,在传入更改上变基当前分支
java·git·intellij-idea
hopsky15 小时前
好用!Git 同时开发多个分支
git
secondyoung17 小时前
Git使用:rebase用法
c语言·经验分享·git·vscode
萧曵 丶18 小时前
CI/CD 流程
git·ci/cd
import_random19 小时前
[git版本控制]git push(详解)
git
bing_feilong20 小时前
gitee pull 总是需要用户名和密码,该如何设置?
git·gitee
毒鸡蛋20 小时前
GIT报错:Connection to git. closed by remote host.
git
ShallowLin21 小时前
Git简化分支管理(main+develop)
git
犹若故人归1 天前
Github/Gitee和Git实践
git·gitee·github
007php0071 天前
mySQL里有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据
数据库·redis·git·mysql·面试·职场和发展·php