大厂的Git代码规范
分支命名 ​
| 分支类型 | 说明 |
|---|---|
| master | 为主分支,也是用于部署生产环境的分支,需要确保稳定性。master分支稳定且只接受merge,任何时间都不能直接修改代码。一般release以及hotfix分支会合并到master分支。 |
| develop | 为开发环境分支,始终保持最新完成以及bug修复后的代码,用于前后端联调。一般开发的feature分支都是基于develop分支创建的。 |
| feature | 开发新功能时,以develop为基础创建feature分支。命名格式可以加上开发的功能模块,命名示例:feature/user_module、feature/cart_module。 |
| test | 为测试环境分支,外部用户无法访问,专门给测试人员使用,版本相对稳定。 |
| release | 为预上线分支(预发布分支),UAT测试阶段使用。一般由test或hotfix分支合并到release分支,直接在release分支上直接修改代码。 |
| hotfix | 线上出现紧急问题时,需要及时修复,以master分支为基础,创建hotfix分支。修复完成后,需要合并到master分支和develop分支。 |
分支与环境对应关系 ​
| 分支 | 功能 | 环境 | 可访问 |
|---|---|---|---|
| master | 主分支,稳定版本 | PRO | 是 |
| develop | 开发分支,最新版本 | DEV | 是 |
| feature | 开发分支,实现新特性 | - | 否 |
| test | 测试分支,功能测试 | FAT | 是 |
| release | 预上线分支,发布新版本 | UAT | 是 |
| hotfix | 紧急修复分支,修复线上bug | - | 否 |
环境说明 ​
- DEV:用于开发者调试使用
- FAT:功能验收测试环境,用于测试环境
- UAT:用户验收测试环境,用于生产环境
- PRO:生产环境
提交类型规范 ​
| 类型 | 说明 |
|---|---|
| feat | 新增功能 |
| fix | 修复bug |
| docs | 仅文档更改 |
| style | 不影响代码含义的更改(空白、格式设置、缺失分号等) |
| refactor | 既不修复bug也不添加特性的代码更改 |
| perf | 改进性能的代码更改 |
| test | 添加缺少的测试或更正现有测试 |
| chore | 对构建过程或辅助工具和库(如文档)的更改 |
示例 ​
以下是根据主流 Git 提交规范整理的提交类型及示例表格(Markdown 格式),综合了历史对话与搜索结果的核心规范:
| 类型 | 说明 | 示例 |
|---|---|---|
feat |
新增功能 | feat(user): 新增第三方登录支持 |
fix |
修复 Bug | fix(payment): 修复金额计算舍入错误 |
docs |
文档更新 | docs(README): 补充项目快速启动指南 |
style |
代码格式调整(不影响逻辑) | style(button): 统一组件缩进为 2 空格 |
refactor |
代码重构(非功能/修复) | refactor(api): 拆分用户验证中间件 |
perf |
性能优化 | perf(image): 实现图片懒加载策略 |
test |
测试相关变更 | test(login): 添加 OAuth2 异常流程测试 |
chore |
构建/工具/依赖更新 | chore(deps): 升级 webpack 至 v5.8.0 |
build |
构建系统变更 | build: 添加 Docker 多阶段构建配置 |
ci |
持续集成配置变更 | ci: 集成 SonarQube 静态代码分析 |
revert |
回滚历史提交 | revert: 撤销 feat: 实验性弹窗功能 |
hotfix |
紧急修复(非标准但常用) | hotfix(order): 修复库存超卖漏洞 |
1. feat(新增功能) ​
feat(payment): add credit card processing support
- Integrate Stripe API for handling payments
- Add new payment method selection UI
- Implement error handling for failed transactions
Closes #123
2. fix(修复Bug) ​
fix(login): resolve authentication timeout issue
- Increase session timeout to 30 minutes
- Fix token refresh logic in AuthService
- Add error logging for auth failures
Refs #456
3. docs(文档更新) ​
docs(README): update API usage examples
- Add new endpoints to 'Getting Started' section
- Include sample request/response for /users endpoint
- Correct outdated configuration steps
4. style(代码样式调整) ​
style(header): reformat CSS according to style guide
- Remove redundant vendor prefixes
- Reorder properties alphabetically
- Adjust indentation to 2 spaces
5. refactor(代码重构) ​
refactor(order): simplify discount calculation
- Extract discount rules into separate helper class
- Remove duplicated code in applyCoupon method
- Optimize conditional checks for eligibility
6. perf(性能优化) ​
perf(image): reduce thumbnail file size
- Implement WebP conversion for thumbnails
- Set default quality to 80%
- Add lazy loading to gallery component
7. test(测试相关) ​
test(user): add unit tests for profile update
- Cover all scenarios for valid/invalid inputs
- Mock external dependencies (API service)
- Assert error messages on validation failure
8. chore(构建/工具更新) ​
chore(deps): upgrade React to v18.2.0
- Update package.json and lockfile
- Resolve breaking changes in useEffect API
- Adjust test cases for new ReactDOM render
9. build(构建系统变更) ​
build: migrate to Webpack 5
- Update configuration for module federation
- Replace deprecated loaders with new equivalents
- Optimize chunk splitting strategy
10. ci(持续集成) ​
ci: set up GitHub Actions for nightly builds
- Add workflow file for Node.js tests
- Configure cron schedule (0 0 * * *)
- Notify Slack on build failure
11. revert(回滚提交) ​
revert: remove experimental feature due to instability
This reverts commit a1b2c3d4e5f6.
中文示例 ​
1.feat(新增功能) ​
feat(支付模块):接入信用卡支付处理能力
- 集成 Stripe 支付网关 API,完成交易创建、确认与 webhook 回调验证全流程;
- 新增支付方式选择界面(含卡片类型图标识别、安全域 iframe 嵌入及 PCI-DSS 合规渲染);
- 实现全链路异常处理机制:涵盖网络超时、卡拒付、3D Secure 认证失败、Stripe API 错误码映射(如
card_declined→ 用户友好提示)。
✅关闭问题 #123(需求来源:支付合规审计整改项)
2.fix(缺陷修复) ​
fix(登录模块):解决身份认证会话超时异常中断问题
- 将 JWT 会话有效期由 15 分钟提升至 30 分钟,并引入滑动过期策略(用户活跃即自动续期);
- 重构
AuthService中的 Token 刷新逻辑:分离刷新请求、本地存储更新、全局状态同步三阶段,消除竞态条件导致的 token 失效; - 在所有认证失败路径中注入结构化错误日志(含 traceId、userAgent、失败原因码),接入 ELK 日志平台实现根因快速定位。
📝 关联问题 #456(SRE 团队监控告警:每日 23:00 出现集中性 401 错误)
3. docs(文档更新) ​
docs(README):全面更新 API 使用示例与集成指南
- 在「快速上手」章节新增
/v2/orders/batch、/v2/webhooks/configure等 5 个 v2 版本核心接口; - 为
/users接口补充完整交互范例:含 cURL 请求命令、标准 Header 设置(Authorization,X-Request-ID)、成功响应 JSON Schema 及常见错误响应体(400/403/429); - 修正旧版文档中已废弃的
JWT_SECRET环境变量配置说明,替换为基于 HashiCorp Vault 的动态密钥轮转实践指引。
4.style(代码格式化) ​
style(页眉组件):依据前端样式规范重构 CSS 代码
- 移除所有冗余浏览器前缀(
-webkit-,-moz-),依赖 Autoprefixer 自动注入兼容性规则; - 按 CSS 属性字典序重排声明(
align-items→background-color→display→font-size…),提升团队代码可维护性; - 统一缩进为 2 个空格(禁用 Tab),并启用 Prettier + Stylelint 双校验流水线,确保 PR 合并前零格式违规。
5.refactor(代码重构) ​
refactor(订单模块):解耦并优化折扣计算引擎
- 将分散在
OrderService、CartController、CheckoutPage中的折扣规则(满减、阶梯价、会员等级系数)抽离为独立DiscountEngine类,支持策略模式动态加载; - 删除
applyCoupon()方法中重复出现的 3 处if (coupon.isValid()) {...}校验逻辑,统一收口至装饰器@ValidateCoupon; - 替换嵌套 if-else 的资格判定为责任链模式(
EligibilityCheckerChain),支持运行时热插拔新规则(如:疫情临时补贴政策)。
6. perf(性能优化) ​
perf(图片服务):系统性降低缩略图资源体积与加载延迟
- 全量启用 WebP 格式转换(通过 Sharp 库),对 PNG/JPEG 源图生成多分辨率 WebP 输出(1x/2x/3x);
- 设定默认压缩质量为 80%,经 PSNR 与 SSIM 测评,在视觉无损前提下平均体积缩减 57%;
- 在画廊组件中集成原生
loading="lazy"属性,并结合 IntersectionObserver 实现滚动预加载(提前加载视口下方 2 屏内容)。
7. test(测试增强) ​
test(用户模块):为个人资料更新功能补充高覆盖率单元测试
- 覆盖全部输入边界场景:空字段、超长字符串(>256 字符)、非法邮箱格式、敏感词过滤、时区字段非法值;
- 使用 Jest Mock 实现
UserService.updateProfile()的外部依赖隔离:模拟 HTTP 客户端、数据库事务、第三方头像托管服务(Cloudinary); - 对验证失败场景进行断言强化:不仅检查返回状态码,更验证错误对象结构(
{ code: 'VALIDATION_ERROR', field: 'bio', message: 'Bio must be under 200 characters' })。
8. chore(构建/工程任务) ​
chore(依赖管理):升级 React 至 v18.2.0 版本
- 同步更新
package.json依赖树与pnpm-lock.yaml,执行pnpm audit --fix修复 3 个中危漏洞; - 迁移
useEffect中的废弃useLayoutEffect替代方案,修复 SSR 下 hydration mismatch 导致的首屏闪烁; - 重构
@testing-library/react测试套件:将render()替换为render(<App />, { wrapper: React.StrictMode }),适配并发渲染新特性。
9.build(构建系统升级) ​
build:整体迁移至 Webpack 5 构建体系
- 重构
webpack.config.js:启用 Module Federation 架构,支持微前端子应用独立部署与跨域共享React,Lodash等基础包; - 替换已弃用的
file-loader/url-loader为内置asset模块类型,简化资源配置; - 采用
splitChunks.optimization精细化分包策略:按业务域拆分vendor(第三方库)、shared(内部工具库)、async(路由懒加载 chunk),首屏 JS 加载量下降 42%。
10. ci(持续集成增强) ​
ci:在 GitHub Actions 中搭建夜间自动化构建与质量门禁
- 新增
.github/workflows/nightly-build.yml:覆盖 Node.js 16/18/20 多版本测试、TypeScript 编译检查、E2E 端到端回归(Cypress); - 配置定时触发器
cron: "0 0 * * *"(UTC 时间每日 00:00),避开工作高峰时段保障 CI 资源; - 集成 Slack Webhook 通知:构建失败时推送带 commit hash、失败步骤截图、直跳 Jenkins 日志链接的富文本消息,平均故障响应时间缩短至 8 分钟内。
11.revert(紧急回滚) ​
revert:因稳定性风险下线实验性暗色主题切换功能
此次提交撤销了提交哈希 a1b2c3d4e5f6(2023-10-15 提交)中引入的 ThemeSwitcher 组件及其配套的 CSS-in-JS 主题上下文。
回滚依据:灰度发布期间发现 iOS Safari 15.6 下触发 WebKit 渲染管线死锁(Crash Log ID: WK-2023-8891),且无法在 48 小时内定位根本原因,优先保障主干稳定性。
单次提交注意事项 ​
- 提交问题必须为同一类别
- 提交问题不要超过3个
- 提交前commit发现不符合规范,用
git commit --amend -m "新的提交信息"或git reset --hard HEAD重新提交一次