中大型团队的 Git 实践

中大型团队的 Git 实践

前言

这是一份经过实际项目打磨、适合中大型研发团队(100-500 人)的 Git 使用规范。目标是:保持代码历史清晰、可追溯、易协作,同时降低合并冲突和上线风险

适用于后端、前端、移动端等多端共用仓库的项目。如果你的团队也在寻找一套简单、可落地、不折腾的 Git 规范,这份可以直接拿来参考或稍作调整后使用。

参考依据:GitFlow 变体 + Conventional Commits + Jira 集成实践


一、分支命名规范

统一使用小写 + 连字符,强制包含 Jira 任务号(或工单号),便于自动化追踪。

格式<type>/<jira-key>-<简短描述>

分支类型

类型 前缀 用途 示例
新功能 feature 迭代内的新需求 feature/proj-123-add-user-login
Bug 修复 bugfix 常规缺陷修复 bugfix/proj-456-fix-order-npe
热修复 hotfix 线上紧急问题,从 master 修复 hotfix/proj-789-fix-payment-gateway
重构/优化 refactor 不影响功能的代码改进 refactor/proj-999-extract-common-utils
文档/配置 docs / chore 文档、构建脚本、依赖更新 docs/proj-101-update-readme

好处

  • Jira 任务页面自动显示相关分支、Commit 和 PR
  • 所有人一看分支名就知道这是哪个需求、什么类型的工作

二、Commit Message 规范

严格遵循 Conventional Commits,但主体描述允许使用中文(中国团队沟通更精准)。

标准格式

<type>(<scope>): <主体描述>

<正文说明(可选)>

<底部信息(可选)>

type 类型(必填,英文)

类型 说明
feat 新功能
fix 修复 Bug
docs 仅文档变更
style 代码格式调整(不影响逻辑)
refactor 重构
perf 性能优化
test 添加/修改测试
chore 工具、配置、构建脚本变更
revert 回滚某次提交

书写规范

  • scope(可选):影响的模块,如 userorderapiadmin
  • 主体描述:中文,50 字以内,使用祈使语气("添加"而不是"添加了"),结尾不加句号

优秀示例

feat(user): 添加手机号注册功能

- 支持短信验证码
- 增加注册来源字段

Jira: PROJ-123
fix(order): 修复支付回调空指针异常

支付成功后 paymentService 未初始化导致 NPE
增加空值判断并记录日志

Jira: PROJ-456

好处

  • 自动生成 Changelog
  • 配合 semantic-release 可实现自动化版本管理
  • 中文描述让团队看 commit 历史时更直观

三、分支与工作流

3.1 分支角色

分支 角色 代码状态 谁可以提交
master 生产分支 已上线的稳定代码 仅通过 MR 合并
develop 开发集成分支 下一版本待发布的代码 所有开发者(通过合并)

3.2 分支关系图

graph LR
    subgraph "稳定分支"
        master["master<br/>(生产环境)"]
        develop["develop<br/>(测试环境)"]
    end

    subgraph "临时分支"
        feature["feature/xxx<br/>(开发分支)"]
    end

    master <-.-|"merge"| develop
    master <---|"从 master 创建"| feature
    feature -.->|"merge 到 develop"| develop

3.3 核心操作规则

从哪个分支拉取?

场景 拉取来源 创建分支
新功能开发 master feature/xxx
常规 Bug 修复 master bugfix/xxx
线上紧急修复 master hotfix/xxx

原则:所有开发分支均从 master 创建,保证代码来源清晰

合并到哪个分支?

源分支 合并目标 说明
feature/xxx develop 提测前合并,触发测试环境发布
bugfix/xxx develop 修复测试环境 Bug
feature/xxx / bugfix/xxx master 功能验收通过后发布生产环境
hotfix/xxx master + develop 紧急修复后同步到两个分支

3.4 标准开发流程

1. 【开始任务】
   git checkout master && git pull
   git checkout -b feature/proj-xxx

2. 【本地开发】
   本地自测通过

3. 【提测】
   git checkout develop && git pull
   git merge feature/proj-xxx
   → 触发测试环境自动部署

4. 【测试发现 Bug】
   git checkout feature/proj-xxx
   修复后重新 merge 到 develop

5. 【准备上线】
   git checkout feature/proj-xxx
   git merge master          # 同步最新生产代码
   解决冲突,检查配置差异
   本地编译 + 单元测试

6. 【合并生产】
   提交 MR 到 master
   Code Review 通过后合并
   → 自动/手动部署生产环境

7. 【同步分支】
   git checkout develop
   git merge master          # develop 同步 master

3.5 重要规则

规则 说明
禁止 直接在 developmaster 上提交代码
禁止 绕过 Code Review 直接合并
必须 上线前将 master merge 到自己的分支
必须 Bug 修复必须在原分支进行,禁止直接在 develop 上修改
建议 开发中途定期 rebase master 到自己分支,减少最终冲突

3.6 分支清理

  • 已合并到 master 的分支,保留 1 个月 后删除
  • develop 失控时:可直接删除后从 master 重建,并通知全团队

四、上线前检查清单

  • master merge 到自己的分支,对比 diff
  • 重点检查:
    • 数据库配置(数据源切换、读写分离)
    • 环境变量、特征开关
    • 日志级别、监控埋点
  • 执行完整 build(compile + test)
  • 提交 MR 并 @ 相关负责人 review
  • 合并后观察生产环境指标

五、推荐工具与最佳实践

场景 工具推荐
分支对比 Sourcetree、GitKraken、Kaleidoscope(Mac)
强制 Commit 规范 husky + commitlint(前端)/ git hook(后端)

最佳实践

  • 小步提交:一次 commit 只做一件事,便于 review 和回滚
  • 定期 rebase:开发中途定期把 master rebase 到自己的分支
  • Code Review:所有代码进 master 前必须至少 1 人 review

写在最后

这套规范在我之前的公司使用了 3 年多,配合 Jira + GitLab,整体协作效率很高,线上事故率显著下降。最重要的是:简单、明确、可执行,不需要大家记住太多复杂规则。

Git 规范没有绝对完美的,只有最适合自己团队的。建议每半年到一年回顾一次,根据团队规模、项目阶段、工具变化进行微调。

更新时间:2026年2月6日