71a57001e0
- Add Gitea Actions workflow - Stage 1: Code quality check (black, isort, mypy, flake8, bandit) - Stage 2: Automated testing (unit + integration tests) - Stage 3: Build backend Docker images - Stage 4: Build frontend static assets - Stage 5: Deploy to staging (develop branch) - Stage 6: Deploy to production (main branch) Also add Git workflow documentation.
7.7 KiB
7.7 KiB
Git 工作流操作手册
版本: v1.0
创建时间: 2026-06-18
适用项目: 小虾 SaaS
一、分支结构
主要分支
| 分支 | 用途 | 保护级别 | 合并要求 |
|---|---|---|---|
| main | 生产稳定版本 | 🔒 最高 | PR + 2 人 Review + CI 通过 |
| develop | 开发主线 | 🔒 高 | PR + 1 人 Review + CI 通过 |
临时分支
| 分支类型 | 命名 | 从哪里创建 | 合并到 | 示例 |
|---|---|---|---|---|
| feature/ | feature/功能名 | develop | develop | feature/asset-upload |
| bugfix/ | bugfix/bug描述 | develop | develop | bugfix/login-timeout |
| hotfix/ | hotfix/紧急修复 | main | main + develop | hotfix/payment-crash |
| release/ | release/版本号 | develop | main + develop | release/v1.2.0 |
二、日常开发流程
开发新功能
# 1. 确保 develop 是最新的
git checkout develop
git pull origin develop
# 2. 创建功能分支
git checkout -b feature/asset-upload
# 3. 开发 + 提交(多次)
git add .
git commit -m "feat(asset): implement OSS upload"
# 4. 推送到远程
git push -u origin feature/asset-upload
# 5. 在 Gitea 创建 Pull Request
# 访问: https://api.xiaoxiajianji.com/git/xiaoxia/xiaoxia-saas/compare/develop...feature/asset-upload
# 6. 等待 CI 检查通过 + Review 通过
# 7. 合并到 develop(在网页上操作)
# 8. 删除本地分支
git checkout develop
git pull origin develop
git branch -d feature/asset-upload
修复 Bug
# 1. 从 develop 创建 bugfix 分支
git checkout develop
git pull origin develop
git checkout -b bugfix/login-timeout
# 2. 修复 + 提交
git add .
git commit -m "fix(auth): resolve login timeout issue"
# 3. 推送并创建 PR(同上)
紧急修复(Hotfix)
# 1. 从 main 创建 hotfix 分支
git checkout main
git pull origin main
git checkout -b hotfix/payment-crash
# 2. 快速修复
git add .
git commit -m "fix(payment): resolve null pointer crash"
# 3. 合并到 main
git checkout main
git merge --no-ff hotfix/payment-crash
git tag -a v1.1.1 -m "Hotfix: payment crash"
git push origin main --tags
# 4. 合并回 develop
git checkout develop
git merge --no-ff hotfix/payment-crash
git push origin develop
# 5. 删除 hotfix 分支
git branch -d hotfix/payment-crash
三、Commit 规范
格式
<type>(<scope>): <subject>
<body>
<footer>
Type 类型
| Type | 说明 | 示例 |
|---|---|---|
| feat | 新功能 | feat(asset): add video upload |
| fix | Bug 修复 | fix(auth): resolve token issue |
| docs | 文档更新 | docs(api): update auth guide |
| style | 代码格式 | style(asset): format with black |
| refactor | 重构 | refactor(auth): extract JWT service |
| perf | 性能优化 | perf(query): add database index |
| test | 测试 | test(asset): add upload tests |
| chore | 构建/工具 | chore(deps): upgrade fastapi |
| ci | CI/CD | ci(github): add security scan |
| revert | 回滚 | revert: revert commit abc123 |
Scope 范围
- asset(素材管理)
- auth(认证)
- workspace(工作空间)
- subscription(订阅)
- generation(视频生成)
- api(API 层)
- ui(前端)
- db(数据库)
- infra(基础设施)
完整示例
feat(asset): implement video classification
- Add AI model adapter for classification
- Add classification job queue
- Add classification result storage
- Update asset entity with classification fields
This implements the core classification feature defined in Phase 7.
Closes #234
四、Pull Request 规范
PR 标题
- 简洁明了,< 70 字符
- 格式同 Commit 格式:
<type>(<scope>): <subject>
PR 描述模板
## 变更内容
简要描述本次 PR 的主要变更。
## 变更类型
- [ ] 新功能
- [ ] Bug 修复
- [ ] 文档更新
- [ ] 重构
- [ ] 性能优化
## 测试情况
- [ ] 单元测试通过
- [ ] 集成测试通过
- [ ] 手动测试完成
## 相关 Issue
Closes #123
## 截图(如有必要)
## 额外说明
Review 检查清单
Reviewer 需要检查:
- 代码符合项目规范
- 遵循 Clean Architecture
- 类型注解完整
- 有足够的测试覆盖
- 文档已更新
- 无安全问题
- CI 检查全部通过
五、Git Hooks
Pre-commit(提交前检查)
自动检查:
- 禁止直接提交到 main/develop
- Python 代码格式(black)
- Python 代码规范(flake8)
- TypeScript/JavaScript 规范(eslint)
Commit-msg(提交信息检查)
自动检查:
- Commit 格式是否符合规范
- 必须包含 type 和 subject
绕过 Hooks(仅紧急情况)
git commit --no-verify -m "emergency fix"
六、版本发布流程
准备发布
# 1. 从 develop 创建 release 分支
git checkout develop
git pull origin develop
git checkout -b release/v1.2.0
# 2. 更新版本号
# 编辑 package.json, __version__.py 等
# 3. 生成 CHANGELOG
# 使用工具或手动整理
# 4. 提交版本更新
git commit -am "chore(release): prepare v1.2.0"
# 5. 推送并创建 PR 到 main
git push -u origin release/v1.2.0
发布到生产
# 1. 合并 release 到 main
git checkout main
git merge --no-ff release/v1.2.0
# 2. 打 tag
git tag -a v1.2.0 -m "Release version 1.2.0"
# 3. 推送
git push origin main --tags
# 4. 合并回 develop
git checkout develop
git merge --no-ff release/v1.2.0
git push origin develop
# 5. 删除 release 分支
git branch -d release/v1.2.0
git push origin --delete release/v1.2.0
七、常见问题
Q1: 如何撤销最后一次提交?
# 保留改动
git reset --soft HEAD^
# 丢弃改动
git reset --hard HEAD^
Q2: 如何修改最后一次提交信息?
git commit --amend -m "new message"
Q3: 如何合并多个提交?
# 合并最近 3 个提交
git rebase -i HEAD~3
# 在编辑器中将 pick 改为 squash
Q4: 如何解决冲突?
# 1. 拉取最新代码
git pull origin develop
# 2. 手动解决冲突
# 编辑冲突文件
# 3. 标记为已解决
git add <resolved-files>
# 4. 继续
git rebase --continue
# 或
git merge --continue
Q5: 如何同步 fork 的仓库?
# 1. 添加上游仓库
git remote add upstream <upstream-url>
# 2. 拉取上游更新
git fetch upstream
# 3. 合并到本地
git merge upstream/main
八、最佳实践
✅ 应该做的
- 经常提交 - 小步快跑,每个逻辑单元一个提交
- 有意义的提交信息 - 清晰描述"做了什么"和"为什么"
- 提交前测试 - 确保代码可运行
- 及时 pull - 保持本地代码最新
- Code Review - 所有代码必须经过 Review
- 保持分支干净 - 及时删除已合并的分支
❌ 不应该做的
- 直接提交到 main/develop - 必须通过 PR
- 强制推送 - 除非你知道自己在做什么
- 提交敏感信息 - 密码、密钥、token 等
- 巨大的提交 - 一次提交改动太多文件
- 无意义的提交信息 - "fix", "update", "change" 等
- 跳过 CI 检查 - 必须等 CI 通过
九、仓库配置
Gitea 分支保护设置
访问: https://api.xiaoxiajianji.com/git/xiaoxia/xiaoxia-saas/settings/branches
main 分支:
- ✅ 启用分支保护
- ✅ 禁止强制推送
- ✅ 禁止删除
- ✅ 需要 PR
- ✅ 需要 2 个 Reviews
- ✅ 需要 CI 通过
develop 分支:
- ✅ 启用分支保护
- ✅ 禁止强制推送
- ✅ 需要 PR
- ✅ 需要 1 个 Review
- ✅ 需要 CI 通过
文档版本: v1.0
最后更新: 2026-06-18
维护人: 小虾 🦐