2026-02-07 15:48:05
写出干净的 Git Commit 不仅能提升代码库的可读性,还能为项目维护、协作和自动化工具提供便利。以下是基于 AngularJS 规范的详细指南:
一、Commit 结构规范干净的 Commit 由三部分组成,用空行分隔:
<header><body><footer>1. Header(必填)格式:<类型>(<作用域>): <主题>示例:
feat(core): add new command 'Upload' to UIfix: update GET headers (#142)类型(8种常见类型):
build: 构建系统或外部依赖变更(如 gulp、npm)。
ci: CI 配置或脚本修改(如 GitHub Workflow)。
docs: 仅文档更新。
feat: 新功能。
fix: 错误修复。
perf: 性能优化。
refactor: 代码重构(非修复或新增功能)。
test: 测试用例补充或修正。
作用域:根据项目模块自定义(如 core、server、router),参考 AngularJS 的
主题:
使用祈使句、现在时态(如 add 而非 added)。
首字母小写,末尾不加句号或逗号。
长度建议不超过 50 字符。
使用工具辅助
通过 git commit -m 直接写简单 Commit,但复杂变更建议用编辑器详细编写。
工具推荐:
团队统一规范
在项目根目录添加 CONTRIBUTING.md 说明 Commit 规则。
通过 Git Hook(如 commit-msg)校验格式(示例脚本):
#!/bin/shif ! head -1 "$1" | grep -qE '^(feat|fix|docs|style|refactor|test|chore)([a-z-]+):'; then echo "Commit 格式错误!示例:feat(core): add new feature" >&2 exit 1fi避免的常见错误
模糊描述:"fix bug" → 应写明修复内容(如 fix: resolve null pointer in user API)。
混合变更:一个 Commit 包含多个不相关修改(如功能+格式调整)。
semantic-release 根据 Commit 类型自动生成版本号(如 feat 触发 minor 版本)。
清晰的 Commit 帮助快速定位问题(如 git bisect 结合 fix 类型过滤)。
一致的格式减少沟通成本(如 BREAKING CHANGE 标记需通知依赖方)。
通过遵循上述规范,你的 Git 历史将变得如 AngularJS 仓库般清晰易读,为项目长期维护奠定基础。