大厂Git使用规范

Git 代码管理规范指南

1. 前言与目的

在多人协作的软件研发过程中,Git 代码管理是保证项目有序迭代、快速定位问题、顺利发布版本的基础。本规范旨在统一团队的分支命名、环境对应关系及提交行为,降低协作成本,避免因分支混乱、提交随意导致的线上故障或版本回滚困难。

所有开发人员、测试人员及运维人员均应遵守本规范。


2. 分支命名规范

2.1 常驻分支(永久存在)

分支名 说明 生命周期
master 主分支,始终对应生产环境(PRO)。该分支的每一次提交都应是一个可发布的稳定版本,禁止直接提交代码。 永久
develop 开发分支,对应开发环境(DEV)。包含最新已完成并验证的功能代码,是集成与日常开发的基础。 永久

2.2 临时分支(按需创建,合并后删除)

分支类型 命名格式 示例 说明
feature feature/功能模块feature/模块_开发者 feature/user_login feature/cart_module develop 拉出,用于新功能开发。完成后合并回 develop
test test(固定名称) test 对应功能验收测试环境(FAT),供测试人员验证,外部用户无法访问。
release release(固定名称) release 对应用户验收测试环境(UAT) ,预上线最终验证。仅允许修复阻断性 Bug,验证后合入 master 并打标签。
hotfix hotfix(或带日期/编号) hotfix master 拉出,紧急修复生产问题。修复后必须同时合并回 masterdevelop(以及当前 release)。

重要原则 :除 masterdevelop 外,所有临时分支在完成任务且合并后应及时删除,避免分支堆积。禁止直接向 master / develop 提交代码。


3. 分支与环境对应关系(完整说明)

分支 环境名称 缩写 是否可被外部访问 主要用途
master 生产环境 PRO 对外提供服务的稳定版本
develop 开发环境 DEV 仅内网/开发者 开发者日常调试、集成最新代码
feature/* 本地或开发环境 DEV(个人) 实现新特性,不对外暴露
test 功能验收测试环境 FAT 测试人员 功能测试、验收、Bug 复测
release 用户验收测试环境 UAT 预发布验证人员 预上线模拟、回归测试、UAT 验证
hotfix 生产环境(修复中) PRO 线上紧急问题修复,修复后重新部署

注意test 分支虽然可被访问,但仅面向内部测试团队;feature 分支即使远程协作,也属于开发阶段,不占用正式环境路由。


4. 分支操作流程详解

新功能开发流程

bash 复制代码
# 1. 从 develop 拉取最新代码
git checkout develop
git pull origin develop

# 2. 创建 feature 分支
git checkout -b feature/user_module

# 3. 在 feature 分支上开发、提交
git add .
git commit -m "feat: 完成用户模块基本功能"

# 4. 推送远程(便于协作)
git push origin feature/user_module

# 5. 通过 MR/PR 将 feature 合并到 develop(禁止直接合并)
# 6. 删除 feature 分支(本地+远程)
git branch -d feature/user_module
git push origin --delete feature/user_module

测试与发布流程

· 功能测试:将 develop 或特定 feature 合并到 test 分支,部署至 FAT 环境供测试团队验证。

· 预发布:develop 功能稳定后,拉出 release 分支,部署至 UAT 环境。

注意:release 分支上只允许修复影响发布的 Bug,禁止新增功能。

· 生产发布:release 验证通过 → 合并到 master 并打版本标签(如 v1.2.0)→ 部署至 PRO 环境。

同时将 release 上的修复同步合并回 develop。

紧急修复流程(hotfix)

bash 复制代码
# 1. 从 master 拉取 hotfix 分支
git checkout master
git pull origin master
git checkout -b hotfix

# 2. 修复问题,提交
git add .
git commit -m "fix: 修复支付接口超时问题"

# 3. 合并到 master(生产)
git checkout master
git merge hotfix
git tag v1.2.1

# 4. 合并到 develop(同步修复)
git checkout develop
git merge hotfix

# 5. 删除 hotfix 分支
git branch -d hotfix

若当前存在未上线的 release 分支:hotfix 还必须合并到该 release 分支,以避免上线时丢失紧急修复。


5. 单次提交规范

5.1 提交的基本原则

  • 单一职责:一次提交只解决一个问题,只能包含同一类别的改动(不能同时包含"新增功能"和"格式调整")。
  • 粒度适中 :一次提交改动逻辑点不要超过 3 个,便于代码审查与回滚。
  • 信息明确:提交信息能清晰表达本次改动的意图。

5.2 提交类型标识(Conventional Commits 风格)

标识 含义 示例
feat 新增功能 feat: 增加短信登录接口
fix 修复 Bug fix: 修复订单金额计算错误
docs 仅文档更改 docs: 更新 API 文档
style 代码格式、空白、分号等(不影响逻辑) style: 统一缩进为2空格
refactor 重构(既不是新功能也不是修复) refactor: 抽取公共验证方法
perf 性能优化 perf: 优化首页加载速度
test 增加或修改测试代码 test: 补充购物车单元测试
chore 构建过程、辅助工具或库的更改 chore: 升级 webpack 到 5.x

5.3 提交信息格式

格式:<type>: <简短描述>,随后可跟空行和详细说明。

示例:

feat: 支持用户头像上传

  • 使用 OSS 存储
  • 前端增加裁剪功能
  • 后端接口增加校验

5.4 提交不符合规范如何修正?

场景 命令
最后一次提交信息写错 git commit --amend -m "新的提交信息"
最后一次提交包含了不该有的改动,想完全重来(未推送) git reset --hard HEAD~1 然后重新提交
已经推送但需修改提交信息 git commit --amend -m "新信息"git push --force-with-lease(谨慎使用)

团队建议 :在 developreleasemaster 分支上禁止使用 --force;个人 feature 分支可酌情使用。


6. 最佳实践与避免事项

6.1 推荐做法

  • 保持分支干净:每完成一个功能,立即合并并删除源分支。
  • 频繁拉取上游代码 :每天开始工作前执行 git pull origin develop,减少冲突。
  • 使用 MR/PR 机制 :要求至少一位同事审查后再合并到 developmaster
  • 与 CI/CD 联动 :对 masterreleasetest 分支的推送自动触发构建和部署。

6.2 禁止事项

  • 直接向 masterdevelop 提交代码(即使是一个小修改也必须通过合并请求)。
  • release 分支上开发新功能。
  • 将未完成或未测试的 feature 合并到 test 分支。
  • 提交信息使用无意义的词语,如 update修改代码fix bug(必须说明具体内容)。

7. 常见问题(FAQ)

Q1:如果同时有多个 feature 需要测试,test 分支如何处理?

A:通常 test 分支只反映当前需测试的代码集合。可将多个 feature 依次合并到 test 进行集成测试,但注意不要互相覆盖。建议使用临时测试分支,如 test/user_module,但最终仍应合并回 testdevelop

Q2:hotfix 修复后,如果当前有 release 分支未上线,应该如何处理?

A:hotfix 既要合并到 master,也要合并到 develop,并且还要合并到当前活跃的 release 分支(如果存在),以避免在上线时丢失修复。

Q3:用户反馈线上的 bug,但在 develop 上无法复现,怎么办?

A:直接从 masterhotfix 分支定位修复,修复后按流程合并回所有相关分支。


8. 附录:分支命名速查表

用途 分支名 基于分支 合并到 环境
日常开发 feature/* develop develop DEV(本地)
功能测试 test develop (可任意) FAT
预发布 release develop master + develop UAT
紧急修复 hotfix master master + develop PRO
生产稳定版 master - - PRO
开发集成分支 develop - - DEV

9. 分支协作示意图

复制代码
master (生产) <- release (预上线) <- develop (开发) <- feature/* (新功能)
     ^                             ^
     |                             |
     +--------- hotfix ------------+ (紧急修复同时合并至 develop)

规范强制:所有合并均须通过 PR/MR 审查 + 自动化流水线,禁止绕过。

相关推荐
无心水7 小时前
【Hermes:安全、权限与生产环境】39、智能体也会犯错?Hermes 纠错、回滚与遗忘机制全指南 —— 让 AI 的错误像 Git 一样可逆可控
人工智能·git·安全·mcp协议·openclaw·hermes·honcho
南境十里·墨染春水12 小时前
linux学习进展 git详解
linux·git·学习
zhangfeng113313 小时前
CodeBuddy ai对话框上面的git docs terminal Rulds 干嘛用的,以thinkphp fastadmin 为例,插件市场
人工智能·git·编程
OYangxf14 小时前
Git Conflict Resolution
大数据·git·elasticsearch
高斯林.神犇14 小时前
Git全套流程
git
次元工程师!16 小时前
LangFlow开发(一)—安装和部署
git·python·大模型·langflow
怣疯knight16 小时前
【无标题】
git
Jim-zf17 小时前
git 锁文件
git
lcx_defender17 小时前
Git常见操作与指令
git