项目使用 Commitizen + commitlint 来确保 Git 提交信息的规范性和一致性。这有助于:
- 自动生成清晰的变更日志(Changelog)
- 快速定位问题提交
- 便于版本管理和发布
- 提高团队协作效率
提交信息必须遵循以下类型之一:
| 类型 | 描述 | 示例 |
|---|---|---|
feat |
新功能 | feat(auth): add OAuth2 login |
fix |
修复 bug | fix(button): prevent double click |
docs |
文档更新 | docs(readme): update installation steps |
style |
代码格式调整 | style(button): adjust padding |
refactor |
重构代码 | refactor(utils): simplify validation logic |
test |
添加或修改测试 | test(auth): add login unit tests |
build |
构建相关 | build(deps): update react version |
ci |
CI/CD 配置 | ci(github): add workflow for PR |
chore |
其他修改 | chore: remove unused files |
revert |
回滚提交 | revert: feat(api) remove experimental endpoint |
<type>(<scope>): <subject>
<body>
<footer>
- type: 必填,提交类型
- scope: 可选,影响范围(如组件名、文件名)
- subject: 必填,简短描述,使用命令式语气
- body: 可选,详细描述
- footer: 可选, Breaking Changes 或 Issue 引用
feat(auth): add OAuth2 authentication
Implemented OAuth2 authentication flow with Google and GitHub providers.
Added login button, auth context, and protected routes.
BREAKING CHANGE: Removed old session-based authentication.
Closes #123, #125
# 交互式提交
pnpm commit
# 或使用 npx
npx cz- 安装推荐的 VS Code 扩展
- 使用 GitLens 的 "Commitizen Commit" 按钮
- 或按
Ctrl+Shift+P执行 "Commitizen: Commit"
git commit -m "feat(auth): add login functionality"项目配置了以下 Git Hooks:
提交前自动执行:
- ESLint 检查并修复代码问题
- Prettier 格式化代码
校验提交信息格式是否符合规范,不符合规范的提交将被拒绝。
使用 standard-version 自动管理版本和生成 changelog:
# 自动升级版本(根据提交类型)
pnpm release
# 指定版本类型
pnpm release:patch # 0.1.0 → 0.1.1
pnpm release:minor # 0.1.0 → 0.2.0
pnpm release:major # 0.1.0 → 1.0.0
# 预览(不实际修改)
pnpm release --dry-run- 及时提交:小而频繁的提交,每个提交只做一件事
- 清晰的描述:使用命令式语气,如 "add feature" 而不是 "added feature"
- 详细说明:复杂的变更在 body 中提供详细说明
- 破坏性变更:明确标记 BREAKING CHANGE
- 关联 Issue:使用
Closes #123或Fixes #123关闭相关 Issue
ERROR: subject may not be empty
ERROR: type may not be empty
ERROR: scope must be lowercase
解决:使用 pnpm commit 确保格式正确
ERROR: ESLint found errors
ERROR: Prettier found unformatted files
解决:
# 修复 ESLint 问题
pnpm lint:fix
# 格式化代码
pnpm formatERROR: must not be longer than 72 characters
ERROR: type must be one of [feat, fix, docs, ...]
解决:修改提交信息符合规范格式