Appearance
Git 团队协作
Git团队协作是现代软件开发的核心实践。本章详细介绍团队协作的最佳实践、流程规范和工具使用。
团队协作基础
协作模型
Git支持多种团队协作模型:
- 集中式模型:所有开发者共享一个中央仓库
- 集成管理模型:指定集成管理者合并代码
- 司机模型:类似Linux内核开发的分层管理
团队角色定义
bash
# 典型Git团队角色
# Maintainer: 项目维护者,负责合并PR
# Contributor: 项目贡献者,提交代码
# Reviewer: 代码审查者,审查代码质量
# Admin: 仓库管理员,管理权限和配置
分支管理策略
分支命名规范
bash
# 功能分支
feature/user-authentication
feature/payment-integration
feature/dashboard-redesign
# 修复分支
bugfix/login-error
bugfix/security-patch
bugfix/performance-issue
# 热修复分支
hotfix/critical-security-fix
hotfix/urgent-bug-fix
# 发布分支
release/v1.2.0
release/v2.0.0-rc1
# 实验分支
experiment/new-feature
wip/work-in-progress
分支权限管理
bash
# GitHub分支保护规则
# 1. main分支保护
# - 需要pull request审查
# - 需要状态检查
# - 禁止强制推送
# - 禁止直接推送到main
# 2. 权限设置
# - Maintainers: 可以管理仓库
# - Developers: 可以推送非保护分支
# - Triage: 可以管理问题和PR
工作流程规范
代码提交规范
bash
# 使用约定式提交(Conventional Commits)
git commit -m "feat: add user authentication module"
git commit -m "fix: resolve login error in auth module"
git commit -m "docs: update authentication API documentation"
git commit -m "style: format authentication code"
git commit -m "refactor: improve auth module structure"
git commit -m "test: add authentication unit tests"
git commit -m "chore: update dependencies"
# 提交信息模板
cat > .gitmessage << EOF
feat: Add new feature
^-- type ---^ ^------ subject ------^
body: Describe the changes in detail
footer: Issue reference, breaking changes
EOF
git config --global commit.template .gitmessage
代码审查流程
bash
# Pull Request审查流程
# 1. 创建PR
# 2. 自动检查(CI/CD)
# 3. 代码审查(1-2人)
# 4. 测试验证
# 5. 合并(Maintainer)
# 审查清单
# - 代码符合规范
# - 功能按预期工作
# - 测试覆盖充分
# - 文档更新完整
# - 没有安全问题
# - 性能无负面影响
团队协作工具
GitHub协作工具
bash
# 1. 问题管理
# - 使用Issues跟踪任务
# - 使用Labels分类问题
# - 使用Projects管理项目
# 2. Pull Request模板
# 创建.github/pull_request_template.md
"""
## 变更描述
简要描述本次变更的内容
## 相关问题
- 关闭 #issue-number
## 测试验证
- [ ] 单元测试通过
- [ ] 集成测试通过
- [ ] 手动测试验证
## 变更类型
- [ ] 新功能
- [ ] Bug修复
- [ ] 文档更新
- [ ] 重构
"""
代码审查配置
yaml
# .github/CODEOWNERS
# 指定代码所有者
* @maintainer
# 按目录指定
src/auth/ @auth-team
src/api/ @api-team
docs/ @documentation-team
# .github/workflows/pr-check.yml
name: PR Check
on:
pull_request:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- run: npm ci
- run: npm test
- run: npm run lint
团队沟通规范
提交信息规范
bash
# 提交信息格式
# <type>(<scope>): <subject>
# <BLANK LINE>
# <body>
# <BLANK LINE>
# <footer>
# 类型说明
# feat: 新功能
# fix: 修复bug
# docs: 文档更新
# style: 代码格式调整
# refactor: 重构
# test: 测试相关
# chore: 构建工具或辅助工具变动
# 作用域可选
git commit -m "feat(auth): add user login functionality"
git commit -m "fix(api): resolve timeout issue in user service"
问题跟踪规范
bash
# 问题模板
# .github/ISSUE_TEMPLATE/feature_request.md
"""
---
name: 功能请求
about: 请求新功能
title: '[Feature] '
labels: 'enhancement'
assignees: ''
---
## 功能描述
描述所需功能
## 业务价值
说明功能的业务价值
## 实现方案
建议的实现方式
## 优先级
[高/中/低]
"""
权限管理
仓库权限配置
bash
# GitHub权限级别
# Read: 可以克隆和拉取
# Triage: 可以管理Issues和PR
# Write: 可以推送分支
# Maintain: 可以管理仓库设置
# Admin: 完全管理权限
# GitLab权限级别
# Guest: 浏览项目
# Reporter: 提交问题
# Developer: 推送代码
# Maintainer: 管理项目
# Owner: 项目所有者
保护分支设置
bash
# 分支保护规则
# - 需要指定数量的审查者批准
# - 需要通过特定状态检查
# - 禁止直接推送
# - 要求PR描述
# - 限制推送者
协作流程
功能开发流程
bash
# 1. 获取最新代码
git checkout main
git pull origin main
# 2. 创建功能分支
git checkout -b feature/user-authentication
# 3. 开发功能
# 编码 -> 测试 -> 提交
git add .
git commit -m "feat(auth): implement login functionality"
# 4. 推送分支
git push -u origin feature/user-authentication
# 5. 创建Pull Request
# 6. 代码审查和修改
git add .
git commit -m "fix: address review comments"
git push origin feature/user-authentication
# 7. 合并后清理
git checkout main
git pull origin main
git branch -d feature/user-authentication
git push origin --delete feature/user-authentication
紧急修复流程
bash
# 1. 从生产分支创建热修复分支
git checkout production
git pull origin production
git checkout -b hotfix/critical-security-fix
# 2. 快速修复
# 修复 -> 测试 -> 提交
git add .
git commit -m "fix: resolve critical security vulnerability"
# 3. 推送并创建PR
git push -u origin hotfix/critical-security-fix
# 4. 紧急审查和合并
# 通常需要快速审查流程
# 5. 部署到生产
# 合并到production并部署
# 6. 同步到开发分支
git checkout main
git pull origin main
git merge --no-ff hotfix/critical-security-fix
git push origin main
团队规范文档
贡献指南
markdown
# 贡献指南
## 开发环境设置
```bash
# 克隆仓库
git clone https://github.com/organization/project.git
cd project
# 安装依赖
npm install
# 设置Git钩子
npm run prepare
分支策略
- 从main创建功能分支
- 功能分支命名:
feature/your-feature-name - 定期同步main分支到功能分支
代码规范
- 遵循ESLint配置
- 使用TypeScript
- 100%测试覆盖率
提交信息
使用约定式提交格式:
feat: 新功能fix: 修复bugdocs: 文档更新
### 代码审查指南
```markdown
# 代码审查指南
## 审查重点
- 代码是否符合规范
- 是否有适当的测试
- 性能影响如何
- 安全性如何
- 文档是否完整
## 审查标准
- 功能正确性
- 代码可读性
- 性能影响
- 安全考虑
- 测试覆盖
## 审查流程
1. 代码风格检查
2. 逻辑正确性
3. 测试完整性
4. 文档更新
5. 性能考虑
协作工具配置
Git钩子配置
bash
# .husky/pre-commit
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
# 运行代码检查
npm run lint
npm run test
# 检查安全漏洞
npm audit
# 如果检查失败,阻止提交
if [ $? -ne 0 ]; then
echo "检查失败,提交被阻止"
exit 1
fi
自动化工具
bash
# 依赖更新自动化
# 使用Dependabot自动创建依赖更新PR
# 代码质量自动化
# 使用SonarQube进行代码质量检查
# 安全扫描自动化
# 集成Snyk或GitHub Security进行安全扫描
冲突解决
团队冲突解决策略
bash
# 1. 预防冲突
# 定期同步main分支到功能分支
git checkout feature-branch
git fetch origin
git rebase origin/main
# 2. 解决冲突
# 沟通 -> 协商 -> 解决 -> 测试
# 3. 冲突解决原则
# - 保持功能完整性
# - 与相关开发者沟通
# - 充分测试解决后的代码
冲突解决流程
bash
# 1. 拉取最新代码
git pull origin main
# 2. 解决冲突
# 编辑冲突文件 -> 标记解决 -> 提交
# 3. 通知团队成员
# 如果影响其他功能,通知相关开发者
团队效率提升
工作流优化
bash
# 1. 使用Git别名提高效率
git config --global alias.pr '!git checkout -b "$1" && git push -u origin "$1"'
git config --global alias.sync '!git fetch origin && git rebase origin/main'
git config --global alias.cleanup '!git fetch --prune && git branch --merged | grep -v "\*\|main\|develop" | xargs -n 1 git branch -d'
# 2. 使用模板
git config --global commit.template ~/.gitmessage
团队工具
bash
# 1. 项目管理工具集成
# GitHub Projects
# GitLab Issues
# Jira
# 2. 沟通工具集成
# Slack通知
# Discord集成
# Microsoft Teams
# 3. 代码质量工具
# CodeClimate
# SonarQube
# Codecov
通过建立良好的团队协作规范和流程,可以显著提高开发效率和代码质量。