You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

5.8 KiB

Git 分支策略

分支结构

主要分支

main

  • 用途: 生产就绪的稳定代码
  • 保护: 不允许直接推送只能通过PR合并
  • 特点: 始终保持可部署状态

develop

  • 用途: 开发集成分支,所有功能分支的合并目标
  • 更新频率: 持续集成新功能
  • 特点: 最新的开发进度,但可能不稳定

功能分支

feature/ui-redesign

  • 用途: 界面重设计相关开发
  • 基于: develop分支
  • 包含:
    • 主界面布局重构
    • 设备卡片组件开发
    • 样式主题系统

feature/database-enhancement

  • 用途: 数据库优化和功能增强
  • 基于: develop分支
  • 包含:
    • 数据库连接管理改进
    • 新表结构实现
    • 数据模型优化

feature/component-system

  • 用途: 可复用组件系统开发
  • 基于: develop分支
  • 包含:
    • DeviceCard组件
    • StatusPanel组件
    • MapViewer组件

支持分支

hotfix/critical-fix

  • 用途: 紧急修复生产问题
  • 基于: main分支
  • 合并到: main 和 develop

release/v2.0.0

  • 用途: 版本发布准备
  • 基于: develop分支
  • 包含: bug修复、文档更新、版本号调整

分支命名规范

功能分支

feature/<功能描述>
feature/ui-redesign
feature/database-enhancement
feature/device-card-component

修复分支

bugfix/<问题描述>
bugfix/connection-timeout
bugfix/ui-layout-issue

热修复分支

hotfix/<紧急问题>
hotfix/database-crash
hotfix/security-vulnerability

发布分支

release/<版本号>
release/v2.0.0
release/v2.0.1

工作流程

1. 功能开发流程

# 1. 从develop创建功能分支
git checkout develop
git pull origin develop
git checkout -b feature/ui-redesign

# 2. 开发过程中定期提交
git add .
git commit -m "feat: 实现设备卡片基础布局"
git commit -m "feat: 添加设备状态指示器"
git commit -m "style: 应用新的颜色主题"

# 3. 推送到远程分支
git push origin feature/ui-redesign

# 4. 创建Pull Request
# 通过GitHub/GitLab界面创建PR
# 目标分支: develop
# 描述: 详细的功能说明和测试结果

2. 代码审查流程

PR模板

## 功能描述
简要描述此PR实现的功能

## 变更内容
- [ ] UI界面重设计
- [ ] 数据库结构优化
- [ ] 新增组件开发
- [ ] 性能优化
- [ ] Bug修复

## 测试清单
- [ ] 单元测试通过
- [ ] 集成测试通过
- [ ] 手动功能测试
- [ ] 性能测试
- [ ] 兼容性测试

## 截图/演示
如果有UI变更请提供截图或GIF演示

## 相关Issues
Closes #123, Relates to #456

3. 集成流程

# 1. 功能完成后合并到develop
git checkout develop
git pull origin develop
git merge feature/ui-redesign
git push origin develop

# 2. 删除已合并的功能分支
git branch -d feature/ui-redesign
git push origin --delete feature/ui-redesign

4. 发布流程

# 1. 从develop创建发布分支
git checkout develop
git pull origin develop
git checkout -b release/v2.0.0

# 2. 版本准备工作
# 更新版本号
# 更新CHANGELOG.md
# 最后的bug修复

# 3. 合并到main和develop
git checkout main
git merge release/v2.0.0
git tag v2.0.0
git push origin main --tags

git checkout develop
git merge release/v2.0.0
git push origin develop

# 4. 删除发布分支
git branch -d release/v2.0.0

提交信息规范

提交类型

  • feat: 新功能
  • fix: 修复bug
  • docs: 文档更新
  • style: 代码格式调整(不影响功能)
  • refactor: 重构代码
  • test: 测试相关
  • chore: 构建过程或辅助工具的变动

提交格式

<type>(<scope>): <subject>

<body>

<footer>

示例

git commit -m "feat(ui): 实现新的设备卡片组件

- 添加设备状态实时显示
- 实现信号强度进度条
- 支持设备操作快捷按钮

Closes #123"

git commit -m "fix(database): 修复连接池内存泄漏问题"

git commit -m "docs: 更新API文档和用户手册"

分支保护规则

main分支保护

  • 禁止直接推送
  • 要求PR审查
  • 要求状态检查通过
  • 要求分支是最新的

develop分支保护

  • 要求PR审查
  • 要求CI构建通过
  • 允许管理员强制推送(紧急情况)

CI/CD集成

自动化检查

# .github/workflows/ci.yml
name: CI
on:
  push:
    branches: [ main, develop ]
  pull_request:
    branches: [ main, develop ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Setup Qt
      uses: jurplel/install-qt-action@v2
    - name: Build
      run: |
        qmake CasualtySightPlus.pro
        make        
    - name: Test
      run: |
        # 运行测试
        make test        

最佳实践

1. 分支管理

  • 保持分支简洁,及时删除已合并的分支
  • 定期同步develop分支到功能分支
  • 避免长期存在的功能分支

2. 提交管理

  • 小而频繁的提交
  • 每个提交只做一件事
  • 提交信息清晰描述变更内容

3. 代码审查

  • 所有代码必须经过审查
  • 审查重点关注功能正确性、代码质量、性能影响
  • 及时响应审查意见

4. 发布管理

  • 版本号遵循语义化版本规范
  • 每个版本都有完整的CHANGELOG
  • 重要版本需要充分测试

紧急情况处理

生产环境紧急修复

# 1. 从main创建hotfix分支
git checkout main
git checkout -b hotfix/critical-database-fix

# 2. 快速修复
git commit -m "hotfix: 修复数据库连接泄漏导致的崩溃"

# 3. 同时合并到main和develop
git checkout main
git merge hotfix/critical-database-fix
git tag v2.0.1
git push origin main --tags

git checkout develop
git merge hotfix/critical-database-fix
git push origin develop

此分支策略确保了代码质量、团队协作效率和项目的稳定发布。