本文将详细介绍如何在团队中规范化 Git 的使用,包括分支管理、提交规范、Code Review 流程等最佳实践。通过本文,您将学习到如何建立一个清晰、高效的 Git 工作流程。
在团队协作中,规范化的 Git 使用流程能带来以下好处:
提高协作效率
减少沟通成本
提升代码质量
便于项目维护
分支类型 | 命名规范 | 说明 | 合并目标 |
---|---|---|---|
主分支 | master/main | 生产环境代码 | - |
开发分支 | develop | 开发环境代码 | master |
功能分支 | feature/* | 新功能开发 | develop |
修复分支 | hotfix/* | 紧急问题修复 | master & develop |
发布分支 | release/* | 版本发布 | master & develop |
测试分支 | test/* | 测试验证 | develop |
<type>(<scope>): <subject>
<body>
<footer>
# 示例
feat(user): implement user authentication system
- Add JWT token generation and validation
- Implement user login and registration APIs
- Add password encryption and validation
- Integrate with OAuth providers
Closes #123, #124
Breaking Changes: Authentication API endpoints have changed
类型 | 说明 | 示例 |
---|---|---|
feat | 新功能 | feat(auth): add Google OAuth login |
fix | 修复问题 | fix(ui): correct button alignment |
docs | 文档更新 | docs(api): update authentication docs |
style | 代码格式 | style(lint): format according to eslint |
refactor | 代码重构 | refactor(cart): simplify calculation |
perf | 性能优化 | perf(images): optimize image loading |
test | 测试相关 | test(api): add user login tests |
chore | 其他更新 | chore(deps): update dependencies |
# 1. 从develop分支创建功能分支
git checkout develop
git pull origin develop
git checkout -b feature/new-feature
# 2. 开发功能并提交
git add .
git commit -m "feat(scope): description"
# 3. 保持分支最新
git fetch origin
git rebase origin/develop
# 4. 解决冲突
git status
git add <resolved-files>
git rebase --continue
# 5. 推送分支
git push origin feature/new-feature
# 6. 创建合并请求
# 使用 GitLab/GitHub 网页操作
# 7. 合并后清理
git checkout develop
git pull origin develop
git branch -d feature/new-feature
// commitlint.config.js
module.exports = {
extends: ['@commitlint/config-conventional'],
rules: {
'type-enum': [
2,
'always',
[
'feat',
'fix',
'docs',
'style',
'refactor',
'perf',
'test',
'chore',
'revert',
'build',
],
],
'type-case': [2, 'always', 'lower-case'],
'scope-case': [2, 'always', 'lower-case'],
'subject-case': [2, 'never', ['sentence-case', 'start-case', 'pascal-case', 'upper-case']],
'subject-empty': [2, 'never'],
'subject-full-stop': [2, 'never', '.'],
'header-max-length': [2, 'always', 72],
},
};
{
"husky": {
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS",
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"src/**/*.{js,jsx,ts,tsx}": [
"eslint --fix",
"prettier --write"
],
"src/**/*.{css,less,scss,sass}": [
"stylelint --fix",
"prettier --write"
]
}
}
## PR 类型
- [ ] 功能新增
- [ ] Bug 修复
- [ ] 代码优化
- [ ] 文档更新
- [ ] 其他
## 修改内容
- 详细描述修改了什么
## 自测清单
- [ ] 本地测试通过
- [ ] 单元测试通过
- [ ] 代码规范检查通过
- [ ] 兼容性测试通过
## 相关链接
- Issue 链接:
- 设计文档链接:
- 其他相关链接:
## 代码质量
- [ ] 代码是否符合编码规范
- [ ] 是否有重复代码
- [ ] 是否有潜在的性能问题
- [ ] 错误处理是否完善
## 功能完整性
- [ ] 是否实现了所有需求
- [ ] 边界条件是否考虑完善
- [ ] 是否有充分的测试用例
## 安全性
- [ ] 是否有安全漏洞
- [ ] 敏感信息是否安全处理
- [ ] 权限控制是否合理
# 安装 commitlint
npm install --save-dev @commitlint/cli @commitlint/config-conventional
# 安装 husky
npm install --save-dev husky
# 安装 lint-staged
npm install --save-dev lint-staged
# 安装 prettier
npm install --save-dev prettier
# 初始化 husky
npx husky install
# 添加 commit-msg hook
npx husky add .husky/commit-msg 'npx --no-install commitlint --edit $1'
# 添加 pre-commit hook
npx husky add .husky/pre-commit 'npx lint-staged'
# .github/workflows/pr-check.yml
name: PR Check
on:
pull_request:
branches: [ master, develop ]
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '16'
- name: Install dependencies
run: npm ci
- name: Lint
run: npm run lint
- name: Test
run: npm test
- name: Build
run: npm run build
问题:团队成员提交信息格式不一致
解决:
问题:分支过多,版本混乱
解决:
问题:Review 流程耗时,反馈不及时
解决:
提交规范工具
代码检查工具
自动化工具
分支管理工具
早晨工作开始
功能开发流程
代码提交准则
Code Review 流程
准备阶段
测试阶段
发布阶段
后续工作