Skip to content

多人协作规范

团队协作规范是高效协作的基础。明确的规范减少沟通成本,提升代码质量。

提交信息规范(Conventional Commits)

见本教程「提交」章节的详细说明。核心规范:

<type>(<scope>): <description>

[optional body]

[optional footer]

团队应在 README 或贡献指南中明确规定使用的 type 列表。

分支命名规范

统一的分支命名让团队成员一眼看出分支用途:

功能分支:     feature/<ticket-id>-<brief-description>
              feature/USER-123-user-avatar-upload
              feature/add-search-functionality

修复分支:     fix/<ticket-id>-<brief-description>
              fix/BUG-456-login-crash-on-ios

热修复分支:   hotfix/<version>-<brief-description>
              hotfix/1.2.1-null-pointer-exception

发布分支:     release/<version>
              release/1.3.0

实验分支:     experiment/<description>
              experiment/graphql-migration

个人工作分支: dev/<username>/<description>
              dev/zhangsan/refactor-auth

配置分支命名检查(pre-push 钩子):

bash
#!/bin/sh
# .git/hooks/pre-push

branch=$(git branch --show-current)
valid_branch_regex="^(main|master|develop|HEAD)$|^(feature|fix|hotfix|release|experiment|chore|docs|refactor|test|dev)/[a-z0-9._/-]+"

if ! echo "$branch" | grep -qE "$valid_branch_regex"; then
  echo "❌ 分支名 '$branch' 不符合规范!"
  echo "请使用格式:feature/xxx, fix/xxx, hotfix/x.x.x-xxx 等"
  exit 1
fi
exit 0

PR 描述模板

.github/pull_request_template.md.gitlab/merge_request_templates/default.md 中创建模板(已在代码审查章节展示)。

多模板支持(GitHub):

.github/
└── PULL_REQUEST_TEMPLATE/
    ├── feature.md        # 功能 PR 模板
    ├── bugfix.md         # Bug 修复模板
    └── hotfix.md         # 热修复模板

CODEOWNERS 文件

CODEOWNERS 定义了代码的责任人,当这些文件被修改时,对应的负责人会自动被加为 reviewer:

# .github/CODEOWNERS(GitHub)
# .gitlab/CODEOWNERS(GitLab)

# 全局默认 reviewer
*                    @tech-lead

# 前端代码
/src/frontend/       @frontend-team @zhang-san
/src/components/     @ui-team

# 后端代码
/src/backend/        @backend-team
/src/api/            @api-team @li-si

# 基础设施
/infrastructure/     @devops-team
/.github/            @devops-team

# 特定文件类型
*.sql                @database-team
*.tf                 @devops-team
package.json         @tech-lead @frontend-team

# 安全相关
/src/auth/           @security-team @tech-lead
/src/crypto/         @security-team

CODEOWNERS 的效果:

  • PR 修改了 /src/auth/ 时,@security-team 自动被添加为 reviewer
  • 可以配置"必须由 CODEOWNERS 审批才能合并"

保护分支设置

在 GitHub/GitLab 中设置分支保护规则:

GitHub Branch Protection Rules

保护 main 分支的推荐配置:
✅ Require a pull request before merging
   ✅ Require approvals: 2
   ✅ Dismiss stale pull request approvals when new commits are pushed
   ✅ Require review from Code Owners
✅ Require status checks to pass before merging
   ✅ Require branches to be up to date before merging
   ✅ Status checks: CI/CD Pipeline, lint, test
✅ Require conversation resolution before merging
✅ Restrict who can push to matching branches: 仅 main 分支管理员
✅ Do not allow bypassing the above settings

GitLab Protected Branches

yaml
# .gitlab-ci.yml 中的相关配置
# 在 GitLab Web 界面 Settings > Repository > Protected Branches 配置:
main:
  allowed_to_merge: Maintainers
  allowed_to_push: No one
  allowed_to_force_push: false
  code_owner_approval_required: true

贡献指南(CONTRIBUTING.md)

为项目创建贡献指南文档:

markdown
# 贡献指南

感谢你考虑为本项目做出贡献!

## 开发环境搭建

1. Fork 本仓库并克隆到本地
2. 安装依赖:`npm install`
3. 复制环境变量:`cp .env.example .env`
4. 启动开发服务器:`npm run dev`

## 分支规范

-`develop` 分支切出功能分支
- 命名格式:`feature/<description>``fix/<description>`

## 提交规范

本项目使用 Conventional Commits 规范:
- `feat:` 新功能
- `fix:` Bug 修复
- `docs:` 文档更新
- ...

## Pull Request 流程

1. 确保分支基于最新的 `develop`
2. 确保所有测试通过:`npm test`
3. 确保代码符合规范:`npm run lint`
4. 创建 PR,填写描述模板
5. 等待至少 2 位成员 review 通过

## 代码规范

- 使用 ESLint + Prettier(已配置)
- 测试覆盖率不低于 80%
- 每个 PR 只包含一个功能或修复

Issue 模板

.github/
└── ISSUE_TEMPLATE/
    ├── bug_report.md
    └── feature_request.md

Bug 报告模板:

markdown
---
name: Bug 报告
about: 创建 bug 报告以帮助我们改进
title: '[BUG] '
labels: bug
---

## Bug 描述
清晰简洁地描述 bug 是什么

## 复现步骤
1. 打开 '...'
2. 点击 '...'
3. 滚动到 '...'
4. 看到错误

## 期望行为
描述你期望发生什么

## 实际行为
描述实际发生了什么

## 截图
如果适用,添加截图来帮助解释问题

## 环境
- OS: [如 macOS 14.0]
- 浏览器: [如 Chrome 120]
- 版本: [如 v1.2.0]

## 额外背景
在此添加任何其他关于问题的背景信息

总结

规范工具/配置
提交信息commitlint + Husky
分支命名pre-push 钩子
Code ReviewCODEOWNERS + 分支保护
PR 流程PR 模板 + 自动化检查
文档CONTRIBUTING.md + Issue 模板

规范不在于多,而在于团队实际能执行。建议从最重要的规范开始(如提交信息规范、PR 流程),逐步完善其他内容。