第19章:团队协作最佳实践 —— 别做那个被嫌弃的人
第19章:团队协作最佳实践 —— 别做那个被嫌弃的人
技术决定你能做什么,协作决定你能走多远。这一章,让我们学习如何成为团队中受欢迎的开发者,而不是那个被嫌弃的人。
19.1 三大原则:沟通、规范、小步
Git 协作的三大原则,就像是武林高手的内功心法——掌握了这些,你的协作功力将大增。
原则一:沟通
graph TD
A[沟通] --> B[开始工作前]
A --> C[工作中]
A --> D[工作完成后]
B --> E[告知团队你要做什么]
C --> F[及时同步进度]
C --> G[遇到问题及时求助]
D --> H[总结分享经验]沟通场景
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| ## ✅ 需要沟通的场景
1. **开始工作前**
- "我要开始开发登录功能了"
- "有人已经在做吗?"
2. **工作中**
- "我遇到了一个技术难题"
- "这个方案可行吗?"
3. **工作完成后**
- "功能已完成,请 review"
- "分享一下遇到的问题和解决方案"
4. **代码冲突时**
- "我们的代码冲突了,一起解决一下"
5. **需要协调时**
- "我需要你接口的支持"
- "能帮我 review 一下吗?"
|
原则二:规范
graph TD
A[规范] --> B[代码规范]
A --> C[提交规范]
A --> D[分支规范]
A --> E[协作规范]
B --> F[统一的代码风格]
C --> G[清晰的提交信息]
D --> H[明确的分支策略]
E --> I[一致的协作流程]规范的重要性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| ## 为什么需要规范?
1. **降低沟通成本**
- 不需要问"这个文件放哪"
- 不需要问"提交信息怎么写"
2. **提高代码质量**
- 统一的代码风格
- 一致的审查标准
3. **减少错误**
- 规范的流程减少遗漏
- 明确的职责减少冲突
4. **方便新人加入**
- 有章可循
- 快速上手
|
原则三:小步
graph TD
A[小步] --> B[小功能]
A --> C[小提交]
A --> D[小 PR]
B --> E[一个功能一个分支]
C --> F[一个改动一个提交]
D --> G[一个 PR 一个主题]小步的好处
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| ## 小步快跑的优势
1. **降低风险**
- 改得少,出错概率低
- 容易回滚
2. **快速反馈**
- 代码审查更快
- 问题发现更早
3. **减少冲突**
- 提交频繁,冲突少
- 合并容易
4. **提高质量**
- 专注做好一件事
- 代码更清晰
|
三大原则的关系
graph LR
A[沟通] --> D[高效协作]
B[规范] --> D
C[小步] --> D
D --> E[团队和谐]
D --> F[项目成功]实践建议
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| ## 每日检查清单
### 沟通
- [ ] 开始工作前在群里说一声
- [ ] 遇到问题及时求助
- [ ] 完成工作后通知相关人员
### 规范
- [ ] 遵循团队的代码规范
- [ ] 提交信息写清楚
- [ ] 按流程创建 PR
### 小步
- [ ] 功能拆分成小块
- [ ] 频繁提交
- [ ] PR 控制在合理大小
|
记住:沟通让团队同步,规范让协作顺畅,小步让风险可控——三大原则,缺一不可!
19.2 Commit 规范:Conventional Commits 实战
提交信息写 “update”、“fix”、“修改”… 这样的提交信息,过一个月后你自己都看不懂改了什么。
Conventional Commits 规范让提交信息清晰、一致、可自动化处理。
什么是 Conventional Commits?
Conventional Commits 是一种提交信息规范,定义了提交信息的格式:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
提交类型(Type)
| 类型 | 含义 | 示例 |
|---|
feat | 新功能 | feat: 添加用户登录 |
fix | Bug 修复 | fix: 修复登录失败问题 |
docs | 文档更新 | docs: 更新 API 文档 |
style | 代码格式 | style: 格式化代码 |
refactor | 重构 | refactor: 重构用户模块 |
perf | 性能优化 | perf: 优化查询速度 |
test | 测试相关 | test: 添加登录测试 |
chore | 构建/工具 | chore: 更新依赖 |
ci | CI/CD 相关 | ci: 更新 GitHub Actions |
build | 构建相关 | build: 更新 webpack 配置 |
revert | 回滚 | revert: 回滚登录功能 |
完整示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| # 基本格式
git commit -m "feat: 添加用户登录功能"
# 带 scope(范围)
git commit -m "feat(auth): 添加用户登录功能"
# 带 body(详细说明)
git commit -m "feat(auth): 添加用户登录功能
- 实现邮箱密码登录
- 添加 JWT Token 认证
- 添加登录状态保持
Closes #123"
# 带 footer(页脚)
git commit -m "feat(auth): 添加用户登录功能
BREAKING CHANGE: 登录接口返回格式变更
Closes #123"
|
提交信息示例
1
2
3
| ## 好的提交信息
### feat: 新功能
|
feat(user): 添加用户注册功能
Closes #100
### fix: Bug 修复
fix(auth): 修复登录失败问题
修复了当密码包含特殊字符时登录失败的问题。
原因是 URL 编码未正确处理。
Fixes #200
### docs: 文档
docs(api): 更新登录 API 文档
### refactor: 重构
refactor(user): 重构用户模块
将用户相关逻辑提取到单独的模块,
提高代码可维护性。
无功能变更。
### test: 测试
test(auth): 添加登录测试
### chore: 构建
chore(deps): 更新依赖
- 更新 React 到 18.0
- 更新 TypeScript 到 5.0
不好的提交信息
1
2
3
4
5
6
7
8
| ## ❌ 不好的提交信息
- "update"(更新了什么?)
- "fix"(修复了什么?)
- "修改"(修改了什么?)
- "2024-01-01 更新"(没有意义)
- "WIP"(Work In Progress,不要提交)
- "bug fix"(哪个 bug?)
|
工具支持
Commitizen
1
2
3
4
5
6
7
| # 安装 Commitizen
npm install -g commitizen
# 使用
git cz
# 交互式选择类型、范围、描述等
|
Commitlint
1
2
3
4
5
6
7
8
9
10
| # 安装 Commitlint
npm install -g @commitlint/cli @commitlint/config-conventional
# 配置 .commitlintrc.js
module.exports = {
extends: ['@commitlint/config-conventional'],
};
# 使用
commitlint --from HEAD~5
|
Husky + Commitlint
1
2
3
4
5
6
7
| # 配置 Husky 在提交前检查
# .husky/commit-msg
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx --no -- commitlint --edit ${1}
|
自动生成 CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
| # 使用 conventional-changelog
npm install -g conventional-changelog-cli
# 生成 CHANGELOG
conventional-changelog -p angular -i CHANGELOG.md -s
# 或者使用 standard-version
npm install -g standard-version
# 自动更新版本号和 CHANGELOG
standard-version
|
团队约定
1
2
3
| ## Commit 规范团队约定
### 提交信息格式
|
():