3.7 KiB
3.7 KiB
Git Commit Workflow
提交暂存文件,自动生成提交信息并创建版本标签的完整工作流。
概述
此工作流用于:
- 自动分析暂存区变更
- 根据 Conventional Commits 规范生成提交信息
- 检测项目类型并更新版本号
- 创建语义化版本标签
执行步骤
步骤 1: 检查暂存区
git diff --cached --name-only
- 如果暂存区为空,通知用户并停止
- 如果有文件,继续下一步
步骤 2: 收集信息(并行执行)
# 并行执行以下命令
git status
git diff --cached
git log --oneline -10
git tag --list | sort -V | tail -5
同时检查 AGENTS.md 文件获取:
- 仓库类型(polyrepo/monorepo)
- 版本规则
- 项目结构信息
步骤 3: 检测仓库类型
Polyrepo(单仓库)
- Tag 格式:
<version>(如1.2.0)
Monorepo(多项目)
- Tag 格式:
<subproject>-<version>(如ios-1.2.0) - 检测特征:
packages/、apps/、services/目录
步骤 4: 检测项目类型和版本
| 项目类型 | 版本文件 | 版本字段 |
|---|---|---|
| iOS | *.xcodeproj/project.pbxproj |
MARKETING_VERSION |
| Node.js | package.json |
version |
| Android (Groovy) | app/build.gradle |
versionName |
| Android (Kotlin) | app/build.gradle.kts |
versionName |
| Go | Git tag only | - |
| Python | pyproject.toml / setup.py |
version |
| Rust | Cargo.toml |
version |
步骤 5: 生成提交信息
遵循 Conventional Commits 格式:
<type>(<scope>): <subject>
提交类型:
| Type | 描述 | 版本影响 |
|---|---|---|
feat |
新功能 | minor +1 |
fix |
Bug 修复 | patch +1 |
perf |
性能优化 | patch +1 |
BREAKING CHANGE |
破坏性变更 | major +1 |
docs |
文档更新 | 无 |
style |
代码格式 | 无 |
refactor |
重构 | 无 |
test |
测试 | 无 |
chore |
维护任务 | 无 |
ci |
CI/CD 变更 | 无 |
build |
构建配置 | 无 |
提交语言:
- macOS/Linux:使用中文
- Windows:使用英文(避免编码问题)
Monorepo Scope:
- 单项目变更:
feat(ios): 添加上传功能 - 多项目变更:
chore: 更新共享依赖
步骤 6: 确定新版本号
根据提交类型计算新版本:
版本递增规则:
feat:minor +1(如1.2.0→1.3.0)fix/perf:patch +1(如1.2.3→1.2.4)- Breaking change:major +1(如
1.2.3→2.0.0)
不更新版本:
docs、test、refactor、style、build、ci、chore
步骤 7: 更新版本文件并暂存
如果需要更新版本(步骤 6 确定了新版本号):
- 更新版本文件:将版本号写入对应的版本文件
- 添加到暂存区:
git add <version-file> - 验证暂存:
确认版本文件已在暂存区
git diff --cached --name-only
步骤 8: 执行提交
git commit -m "<commit-message>"
步骤 9: 创建版本标签
仅在版本更新时创建(除非用户指定 "skip tag"):
Polyrepo:
git tag -a "1.2.0" -m "<commit-message>"
Monorepo:
git tag -a "ios-1.2.0" -m "<commit-message>"
选项
skip tag/skip:跳过标签创建
输出格式
✓ 提交成功
提交信息:[commit message]
版本标签:[tag](如果创建了)
要推送到远程仓库,请运行:/git-push
注意事项
- 此命令不会推送到远程,使用
/git-push推送 - 暂存区为空时会提示用户先
git add - 标签注释使用与提交相同的消息内容