Git 是目前最流行的分布式版本控制系统。本文分享 Git 工作流的最佳实践,帮助团队更高效地协作。
分支管理策略
Git Flow
Git Flow 是一种经典的分支模型:
1 2 3 4 5 6
| master (main) ─────●────────────●──────> \ ^ \ / develop ●────────●────●──────────●───> \ \ \ / feature ●──●──● hotfix ●──●────●──●──●──>
|
主要分支:
master/main: 生产环境代码
develop: 开发主分支
feature/*: 功能开发分支
release/*: 发布准备分支
hotfix/*: 紧急修复分支
GitHub Flow
更简化的工作流:
1 2 3 4
| main ●────────●────────●────────●───> \ \ \ \ feature ●──●──●──● feature ●──●──●──● (PR) (PR)
|
特点:
- 只有一个长期分支
main
- 所有开发通过 Pull Request 进行
- 持续部署友好
提交规范
Conventional Commits
1 2 3 4 5 6
| <type>(<scope>): <subject>
<body>
<footer>
|
类型 (type):
feat: 新功能
fix: Bug 修复
docs: 文档更新
style: 代码格式(不影响功能)
refactor: 重构
perf: 性能优化
test: 测试相关
chore: 构建/工具配置
示例:
1 2 3 4 5
| git commit -m "feat(auth): add user login feature"
git commit -m "fix(api): resolve timeout issue on user endpoint"
git commit -m "docs(readme): update installation instructions"
|
Commitizen 工具
安装 Commitizen 自动化提交:
1 2
| npm install -g commitizen cz-conventional-changelog echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc
|
使用 git cz 替代 git commit。
常用 Git 命令
分支操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| git checkout -b feature/new-feature
git switch develop
git branch -d feature/old-feature
git push origin --delete feature/old-feature
git branch -m old-name new-name
|
暂存操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| git stash save "暂存描述"
git stash list
git stash pop
git stash apply stash@{1}
git stash drop stash@{0}
|
撤销操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| git restore file.js
git restore --staged file.js
git reset --soft HEAD~1
git reset --hard HEAD~1
git commit --amend
git add file.js git commit --amend --no-edit
|
变基 (Rebase)
1 2 3 4 5 6 7 8 9 10
| git rebase main
git rebase -i HEAD~3
git rebase --continue git rebase --skip git rebase --abort
|
Pull Request 最佳实践
PR 标题和描述
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| ## 功能描述 简要描述本次 PR 的内容和目的
## 改动点 - [ ] 改动1 - [ ] 改动2 - [ ] 改动3
## 测试情况 - [ ] 单元测试通过 - [ ] 手动测试通过 - [ ] 代码审查通过
## 相关 Issue Closes #123
|
代码审查清单
.gitignore 最佳实践
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| # 依赖 node_modules/
# 构建产物 dist/ build/ public/
# 环境变量 .env .env.local
# IDE .idea/ .vscode/ *.swp *.swo
# 操作系统 .DS_Store Thumbs.db
# 日志 *.log npm-debug.log*
# 临时文件 *.tmp .cache/
|
Git Hook
Husky + lint-staged
1 2 3
| npm install husky lint-staged --save-dev npx husky install npx husky add .husky/pre-commit "npx lint-staged"
|
1 2 3 4 5 6 7 8
| { "lint-staged": { "*.{js,jsx}": ["eslint --fix", "prettier --write"], "*.{css,scss}": ["stylelint --fix", "prettier --write"], "*.{json,md}": ["prettier --write"] } }
|
常见问题解决
合并冲突
1 2 3 4 5 6 7 8 9 10 11
| git status
git add conflicted-file.js
git commit
|
恢复丢失的提交
1 2 3 4 5 6
| git reflog
git checkout SHA git branch recovery-branch
|
总结
良好的 Git 工作流是团队协作的基础。选择适合团队的分支策略,遵循提交规范,善用工具自动化流程,可以大大提升开发效率。