大厂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 审查 + 自动化流水线,禁止绕过。

相关推荐
东北甜妹3 小时前
GitLab配置步骤
git
恋喵大鲤鱼7 小时前
git add
git·git add
jiayong238 小时前
CI/CD深度解析01-核心概念与原理
运维·git·ci/cd
天麓8 小时前
git 切换用户和邮箱的方法
git
科技道人10 小时前
Launcher allapps界面顶部推荐的app
git·github·launcher·allapps
云水一下10 小时前
平行宇宙的魔法——Git 分支与合并的艺术
git
AI 编程助手GPT11 小时前
ChatGPT 新手入门与实战操作指南
开发语言·人工智能·git·python·chatgpt
MU在掘金9169512 小时前
给AI Agent做一个代码大脑:我用Tree-sitter+ChromaDB+MCP搭了个代码知识库
git·python
甄心爱学习12 小时前
【项目实训】法律文书智能摘要系统7
git·python
cheems952712 小时前
Git 分支管理
大数据·git