🔀 多人协作 Git 规范


目录

  1. 分支管理规范
  2. 提交信息规范
  3. Git 命令规范
  4. 协作流程图解
  5. 常见问题处理

1. 分支管理规范

1.1 分支类型

分支类型命名规则说明生命周期
mainmain生产环境代码,随时可部署永久
developdevelop开发主分支,集成最新功能永久
featurefeature/功能描述新功能开发分支临时
fixfix/问题描述Bug 修复分支临时
hotfixhotfix/问题描述生产环境紧急修复临时
releaserelease/版本号发布准备分支临时

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 <分支名>

# 合并冲突处理
# 1. 解决冲突文件
# 2. 添加已解决的文件
git add <冲突文件>
# 3. 继续合并
git merge --continue

# 放弃合并
git merge --abort

3.3 Rebase 操作

# 变基拉取
git pull -r

# Rebase 冲突处理
# 1. 解决冲突文件
# 2. 添加已解决的文件
git add <冲突文件>
# 3. 继续变基
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  # 在 main/develop 分支

# ⚠️ 谨慎使用
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 冲突解决

# Merge 冲突
git merge --no-ff feature/xxx
# 出现冲突后:
# 1. 手动编辑冲突文件,保留正确代码
# 2. 删除冲突标记 <<<<<<<, =======, >>>>>>>
# 3. 保存文件
git add <冲突文件>
git merge --continue

# Rebase 冲突
git pull -r
# 出现冲突后:
git add <冲突文件>
git rebase --continue

# 放弃操作
git merge --abort   # 放弃合并
git rebase --abort  # 放弃变基

5.2 误操作恢复

# 场景 1:误删除分支
git reflog                        # 找到删除前的 commit_id
git checkout -b <分支名> <commit_id>

# 场景 2:误提交到错误分支
git log --oneline                 # 找到要移动的 commit_id
git checkout <正确分支>
git cherry-pick <commit_id>
git checkout <错误分支>
git reset --soft HEAD^            # 撤销错误提交

# 场景 3:提交信息写错(未推送)
git commit --amend -m "正确的提交信息"

# 场景 4:需要撤销已推送的提交
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. 团队约定

✅ 必须遵守

  1. 提交前检查:确保代码通过 Lint 检查,无编译错误
  2. 提交信息规范:使用规定的 Type 和格式
  3. 分支命名规范:使用 类型/描述 格式
  4. 及时同步:开发前先 git pull -r 同步最新代码
  5. 小步提交:一个功能点一次提交,便于回溯
  6. Code Review:合并到 main/develop 前必须经过 Review

⛔ 严禁操作

  1. 禁止 force pushgit push -f 会破坏团队历史
  2. 禁止直接推送 main:必须通过 PR 合并
  3. 禁止提交敏感信息:密码、密钥等不得提交
  4. 禁止提交调试代码console.logdebugger
  5. 禁止大文件提交:超过 10MB 的文件使用 Git LFS

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐