Skip to content
On this page

Git 团队协作

Git团队协作是现代软件开发的核心实践。本章详细介绍团队协作的最佳实践、流程规范和工具使用。

团队协作基础

协作模型

Git支持多种团队协作模型:

  1. 集中式模型:所有开发者共享一个中央仓库
  2. 集成管理模型:指定集成管理者合并代码
  3. 司机模型:类似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: 修复bug
  • docs: 文档更新

### 代码审查指南

```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

通过建立良好的团队协作规范和流程,可以显著提高开发效率和代码质量。