🔀 多人协作 Git 规范
目录
- 分支管理规范
- 提交信息规范
- Git 命令规范
- 协作流程图解
- 常见问题处理
1. 分支管理规范
1.1 分支类型
| 分支类型 | 命名规则 | 说明 | 生命周期 |
|---|
main | main | 生产环境代码,随时可部署 | 永久 |
develop | develop | 开发主分支,集成最新功能 | 永久 |
feature | feature/功能描述 | 新功能开发分支 | 临时 |
fix | fix/问题描述 | Bug 修复分支 | 临时 |
hotfix | hotfix/问题描述 | 生产环境紧急修复 | 临时 |
release | release/版本号 | 发布准备分支 | 临时 |
1.2 分支命名规范
✅ 正确示例:
feature/user-login # 用户登录功能
feature/product-search # 商品搜索功能
fix/login-validation # 登录验证修复
fix/cart-calculation # 购物车计算修复
hotfix/payment-error # 支付错误紧急修复
release/v1.2.0 # 1.2.0 版本发布
❌ 错误示例:
feature/UserLogin # 不使用大驼峰
feature/user_login # 不使用下划线
feature/新功能 # 不使用中文
my-feature # 缺少类型前缀
feat/xxx # 使用完整单词 feature
1.3 分支流程图
main ─────●─────────────────────────────●─────────────→ 生产发布
│ ↑
│ │ merge
↓ │
develop ────●────●────●────●────●────●────●────●────→ 开发集成
│ ↑ │ ↑ │ ↑
│ │ │ │ │ │
↓ │ ↓ │ ↓ │
feature/a ───●────● │ │ │ │ 功能开发
↓ │ │ │
feature/b ───────────●────● │ │ 功能开发
↓ │
fix/bug-x ────────────────────●────● 问题修复
1.4 分支保护规则
| 分支 | 直接推送 | 强制推送 | 删除 | 合并要求 |
|---|
main | ❌ 禁止 | ❌ 禁止 | ❌ 禁止 | PR + Code Review |
develop | ❌ 禁止 | ❌ 禁止 | ❌ 禁止 | PR |
feature/* | ✅ 允许 | ⚠️ 谨慎 | ✅ 允许 | - |
fix/* | ✅ 允许 | ⚠️ 谨慎 | ✅ 允许 | - |
2. 提交信息规范
【GIT】提交规范
3. Git 命令规范
3.1 日常操作命令
初始化与克隆
git clone <仓库地址>
git clone -b <分支名> <仓库地址>
分支操作
git branch -a
git checkout <分支名>
git checkout -b <新分支名>
git checkout -b <新分支名> origin/<基础分支>
git branch -d <分支名>
git branch -D <分支名>
git push origin --delete <分支名>
代码同步
git pull -r
git fetch
git fetch origin <分支名>
提交代码
git add <文件路径>
git add .
git commit -m "<提交信息>"
git commit --amend -m "<新的提交信息>"
git push origin <分支名>
git push -u origin <分支名>
3.2 合并操作
git merge --no-ff <分支名>
git add <冲突文件>
git merge --continue
git merge --abort
3.3 Rebase 操作
git pull -r
git add <冲突文件>
git rebase --continue
git rebase --abort
3.4 撤销与回退
git reset --soft HEAD^
git reset --soft <commit_id>
git revert <commit_id>
git push origin <分支名>
git checkout -- <文件路径>
git reset HEAD <文件路径>
3.5 查看历史
git log
git log --oneline
git log --graph --oneline --all
git reflog
3.6 Cherry-pick
git cherry-pick <commit_id>
git cherry-pick <commit_id_1> <commit_id_2>
git cherry-pick <start_commit_id>^..<end_commit_id>
3.7 ⛔ 禁止使用的命令
git push -f
git push --force
git reset --hard
git push --force-with-lease
4. 协作流程图解
4.1 功能开发流程
┌─────────────────────────────────────────────────────────────────────┐
│ 功能开发流程 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ① 同步最新代码 │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ git checkout develop │ │
│ │ git pull -r │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ② 创建功能分支 │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ git checkout -b feature/user-login │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ③ 开发并提交 │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ git add <修改的文件> │ │
│ │ git commit -m "feat(user): 添加登录表单组件" │ │
│ │ git commit -m "feat(user): 实现登录API调用" │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ④ 推送到远程 │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ git push origin feature/user-login │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ⑤ 创建 Pull Request 并请求 Code Review │
│ ↓ │
│ ⑥ Review 通过后合并到 develop │
│ ↓ │
│ ⑦ 删除功能分支 │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ git branch -D feature/user-login │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
4.2 Bug 修复流程
┌─────────────────────────────────────────────────────────────────────┐
│ Bug 修复流程 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ① git checkout develop && git pull -r │
│ ↓ │
│ ② git checkout -b fix/login-validation │
│ ↓ │
│ ③ 修复 Bug 并提交 │
│ git commit -m "fix(user): 修复登录表单验证失效问题" │
│ ↓ │
│ ④ git push origin fix/login-validation │
│ ↓ │
│ ⑤ 创建 PR → Code Review → 合并 │
│ ↓ │
│ ⑥ git branch -D fix/login-validation │
│ │
└─────────────────────────────────────────────────────────────────────┘
4.3 紧急修复流程(Hotfix)
┌─────────────────────────────────────────────────────────────────────┐
│ 紧急修复流程 (Hotfix) │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ① 从 main 分支创建 hotfix │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ git checkout main && git pull -r │ │
│ │ git checkout -b hotfix/payment-error │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ② 修复并提交 │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ git commit -m "hotfix(pay): 修复支付回调异常" │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ③ 合并到 main 并部署 │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ git checkout main │ │
│ │ git merge --no-ff hotfix/payment-error │ │
│ │ git push origin main │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ④ 同步到 develop │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ git checkout develop │ │
│ │ git merge --no-ff hotfix/payment-error │ │
│ │ git push origin develop │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ⑤ 删除 hotfix 分支 │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ git branch -D hotfix/payment-error │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
5. 常见问题处理
5.1 冲突解决
git merge --no-ff feature/xxx
git add <冲突文件>
git merge --continue
git pull -r
git add <冲突文件>
git rebase --continue
git merge --abort
git rebase --abort
5.2 误操作恢复
git reflog
git checkout -b <分支名> <commit_id>
git log --oneline
git checkout <正确分支>
git cherry-pick <commit_id>
git checkout <错误分支>
git reset --soft HEAD^
git commit --amend -m "正确的提交信息"
git revert <commit_id>
git push origin <分支名>
5.3 同步远程分支
git branch -r
git fetch origin
git checkout -b <本地分支名> origin/<远程分支名>
git fetch --prune
6. 命令速查表
日常高频命令
| 场景 | 命令 |
|---|
| 克隆仓库 | git clone <仓库地址> |
| 切换分支 | git checkout <分支名> |
| 创建分支 | git checkout -b <新分支名> |
| 拉取代码 | git pull -r |
| 暂存文件 | git add <文件> |
| 提交代码 | git commit -m "<信息>" |
| 推送代码 | git push origin <分支名> |
| 合并分支 | git merge --no-ff <分支名> |
| 删除分支 | git branch -D <分支名> |
问题处理命令
| 场景 | 命令 |
|---|
| 查看历史 | git log --oneline |
| 查看所有历史 | git reflog |
| 撤销未推送提交 | git reset --soft HEAD^ |
| 撤销已推送提交 | git revert <commit_id> |
| 解决合并冲突后 | git add <文件> → git merge --continue |
| 解决变基冲突后 | git add <文件> → git rebase --continue |
| 放弃合并 | git merge --abort |
| 放弃变基 | git rebase --abort |
| 摘取提交 | git cherry-pick <commit_id> |
7. 团队约定
✅ 必须遵守
- 提交前检查:确保代码通过 Lint 检查,无编译错误
- 提交信息规范:使用规定的 Type 和格式
- 分支命名规范:使用
类型/描述 格式 - 及时同步:开发前先
git pull -r 同步最新代码 - 小步提交:一个功能点一次提交,便于回溯
- Code Review:合并到 main/develop 前必须经过 Review
⛔ 严禁操作
- 禁止 force push:
git push -f 会破坏团队历史 - 禁止直接推送 main:必须通过 PR 合并
- 禁止提交敏感信息:密码、密钥等不得提交
- 禁止提交调试代码:
console.log、debugger 等 - 禁止大文件提交:超过 10MB 的文件使用 Git LFS
所有评论(0)