
🚀 从零构建高效团队 Git 工作流:基于 Husky、Commitlint 和分支策略的实践指南

在构建一款长期维护、多人协作的教育类 App时,一个清晰可控、自动化的 Git 工作流是成功的基石。
本文将完整介绍如何从 0 到 1 为你的项目构建一套 现代化 Git 工作流,包括:
- 分支管理规范(Git Flow 精简版)
- 提交信息格式化(Commitlint)
- 本地 Git Hook 自动校验(Husky)
- PR 模板(Pull Request Template)
- 实战建议与可复用脚本
📁 1. 分支策略:明确职责,清晰协作
我们采用一种精简版的 Git Flow 策略,适合小中型项目,结构如下:
✅ 分支结构
| 分支类型 | 用途说明 |
|---|---|
main |
永远稳定可部署,线上版本源头 |
develop |
所有开发集成的主干,经过测试后才进入 main |
feature/* |
每个新功能创建一个分支 |
bugfix/* |
用于开发阶段发现的 Bug 修复 |
hotfix/* |
用于线上紧急修复 |
release/* |
准备上线版本时从 develop 切出,稳定后合并到 main 和 develop |
✅ 分支流程图(Mermaid 示例)
main
develop
feature/auth
feature/course
release/v1.0.0
✍️ 2. 提交信息格式规范:Commitlint
我们使用 Commitlint 来统一提交信息格式,使项目提交历史更清晰、可自动生成 changelog。
格式规范:
<type>(scope): message
支持的 type 类型:
feat:新功能fix:修复 bugdocs:文档变更style:代码格式调整(无逻辑变更)refactor:重构test:添加测试chore:构建、依赖更新
✅ 合法提交示例:
git commit -m "feat(auth): 添加 Google 登录功能"
git commit -m "fix(course): 修复课程加载错误"
🛠️ 3. 配置 Git Hook 自动校验:Husky + Commitlint
为了让格式规范“落地执行”,我们用 Husky 实现本地 Git hook 自动校验提交信息。
安装命令(npm)
npm install --save-dev husky @commitlint/cli @commitlint/config-conventional
npx husky install
npm pkg set scripts.prepare="husky install"
npx husky add .husky/commit-msg 'npx --no commitlint --edit "$1"'
创建 commitlint.config.js
module.exports = {
extends: ['@commitlint/config-conventional'],
rules: {
'type-enum': [
2,
'always',
['feat', 'fix', 'docs', 'style', 'refactor', 'test', 'chore']
],
'subject-case': [0]
}
};
✅ 4. 创建 PR 模板:Pull Request Template
为了团队成员提交 Pull Request 时结构更清晰,我们创建 .github/PULL_REQUEST_TEMPLATE.md:
# 🚀 Pull Request 标题(建议格式)
<!-- 示例: feat(checkin): 实现课程打卡接口 -->
## 📌 变更类型
- [ ] ✨ 新功能
- [ ] 🐛 Bug 修复
- [ ] 📝 文档变更
- [ ] 🎨 样式优化
- [ ] ♻️ 代码重构
- [ ] ✅ 添加测试
- [ ] 🧰 构建相关
## 🧩 本次变更内容简述
...
## 🧪 测试情况说明
...
## 🗃️ 数据库变更(如有)
...
## 🔗 关联 Issue / 任务
...
## 📝 补充说明
...
🧩 5. 整体目录结构整理(关键文件)
project-root/
├── .husky/
│ └── commit-msg
│ └── README.md # 可选:记录 hook 行为
├── .github/
│ └── PULL_REQUEST_TEMPLATE.md
├── commitlint.config.js
├── package.json # 含 prepare 脚本
📚 附录:常用 Git 命令清单
# 创建开发主分支
git checkout -b develop
# 创建功能分支
git checkout -b feature/xxx
# 功能开发完成合并
git checkout develop
git merge feature/xxx
# 发布分支
git checkout -b release/v1.0.0
# 修复 bug
git checkout -b bugfix/xxx
# 紧急线上修复
git checkout main
git checkout -b hotfix/xxx
✅ 总结:这一整套 Git 工作流的好处
| 特性 | 好处 |
|---|---|
| 分支清晰 | 主干稳定,功能隔离,便于并行开发 |
| 提交规范 | 格式统一,便于审查、生成 changelog |
| 自动校验 | 避免不规范提交,保障代码质量 |
| PR 模板 | 结构化信息收集,审查更高效 |
| 扩展性强 | 支持后续接入 CI/CD、changelog 自动生成、版本自动标记等 |
订阅 FreeMac
每周精选:Mac 高效技巧、免费替代付费软件、开发者工具推荐。用对你的 MacBook,省钱 + 提效。