73 - Git 工作流与团队协作教程

适用人群:所有开发者
难度:低-中
预计学习时间:5-8小时

Git 工作流对比

工作流适合团队复杂度特点
Trunk-Based小团队直接在main开发
Git Flow大团队多分支模型
GitHub Flow中小团队PR为主
GitLab Flow中大团队环境分支

GitHub Flow(推荐)

工作流程:

main (生产环境)
  │
  ├── feature/login (功能分支)
  │     ↓ 开发完成
  │   Pull Request → Code Review → CI测试
  │     ↓ 通过
  │   Merge to main
  │     ↓ 自动部署
  │
  ├── feature/dashboard
  └── fix/header-bug

命令:
# 1. 创建功能分支
git checkout -b feature/login

# 2. 开发并提交
git add .
git commit -m "feat: add login page"

# 3. 推送并创建PR
git push origin feature/login
# 在GitHub上创建Pull Request

# 4. Code Review通过后合并
# 在GitHub上点击 "Merge pull request"

# 5. 拉取最新代码
git checkout main
git pull


Commit 规范(Conventional Commits)

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

type类型:
feat:     新功能
fix:      修复bug
docs:     文档
style:    格式(不影响功能)
refactor: 重构
test:     测试
chore:    构建/工具
perf:     性能优化
ci:       CI配置

示例:
feat(auth): add Google OAuth login
fix(api): handle null response in /users
docs(readme): update installation steps
refactor(utils): extract date formatting
chore(deps): update Next.js to 14.2
perf(db): add index for user email column
test(auth): add login integration tests

好处:
- 自动生成CHANGELOG
- 方便筛选特定类型的提交
- 语义化版本自动推断


Git 常用命令速查

# 分支操作
git branch                     # 查看分支
git branch -a                  # 查看所有分支(含远程)
git checkout -b feature/xxx    # 创建并切换分支
git branch -d feature/xxx      # 删除分支
git branch -D feature/xxx      # 强制删除

# 暂存操作
git stash                      # 暂存当前修改
git stash pop                  # 恢复暂存
git stash list                 # 查看暂存列表
git stash drop                 # 删除暂存

# 撤销操作
git checkout -- file.txt       # 撤销文件修改
git reset HEAD file.txt        # 取消暂存
git reset --soft HEAD~1        # 撤销提交保留修改
git reset --hard HEAD~1        # 撎销提交丢弃修改(危险!)
git revert <commit>            # 创建反向提交

# 查看历史
git log --oneline              # 简洁日志
git log --graph --oneline      # 图形化日志
git log -p file.txt            # 文件修改历史
git blame file.txt             # 查看每行谁改的

git diff                       # 工作区 vs 暂存区
git diff --staged              # 暂存区 vs 上次提交
git diff main..feature         # 两个分支差异

# 标签
git tag v1.0.0                 # 创建标签
git tag -a v1.0.0 -m "v1.0.0"  # 带注释的标签
git push origin v1.0.0         # 推送标签
git push origin --tags         # 推送所有标签

# 变基
git rebase main                # 将当前分支变基到main
git rebase -i HEAD~3           # 交互式变基(合并提交)

# cherry-pick
git cherry-pick <commit>       # 摘取特定提交


.gitignore 模板

# Node.js
node_modules/
.env
.env.local
dist/
build/
*.log

# Python
__pycache__/
*.pyc
.venv/
venv/
.env

# IDE
.vscode/
.idea/
*.swp
*.swo

# OS
.DS_Store
Thumbs.db

# 调试/测试
coverage/
.nyc_output/


团队协作最佳实践

1. 每天至少pull一次main分支
2. 功能分支生命周期不超过3天
3. PR不超过300行改动
4. 每个PR都要Code Review
5. CI通过才能合并
6. 合并后删除功能分支
7. 使用Squash Merge保持main历史清晰
8. 重要的操作写在PR描述中

返回首页