分支管理和提交信息规范

分支管理和提交信息规范

分支管理规范

分支类型

主要分支
  • master/main - 生产环境分支,稳定可发布的代码
  • develop - 开发测试分支,用于集成和测试各个功能分支
功能分支
  • feature/功能名称 - 新功能开发(从master分支创建)
    • 示例:feature/user-loginfeature/payment-system
  • bugfix/问题描述 - Bug修复
    • 示例:bugfix/login-errorbugfix/payment-timeout
  • hotfix/紧急修复 - 生产环境紧急修复
    • 示例:hotfix/security-patchhotfix/critical-bug
辅助分支
  • release/版本号 - 版本发布准备
    • 示例:release/v1.2.0release/v2.0.0-beta
  • support/维护版本 - 长期维护分支
    • 示例:support/v1.xsupport/legacy

分支命名规范

格式要求
复制代码
分支类型/简短描述
命名规则
  • 使用小写字母和连字符(kebab-case)
  • 避免使用下划线或驼峰命名
  • 描述要简洁明了,控制在3-5个单词内
  • 可以包含issue编号:feature/123-user-profile
示例
bash 复制代码
# ✓ 良好的分支名
feature/user-authentication
bugfix/header-layout-issue
hotfix/payment-gateway-error
release/v2.1.0
feature/456-shopping-cart

# ✗ 不推荐的分支名
Feature/UserAuth
user_login_feature
fix-bug
new-feature
very-long-branch-name-that-describes-everything

分支工作流程

1. Feature 分支流程
bash 复制代码
# 从 master 分支创建功能分支(确保基于稳定版本)
git checkout master
git pull origin master
git checkout -b feature/new-feature

# 开发完成后合并到 develop 分支进行测试
git checkout develop
git pull origin develop
git merge feature/new-feature
git push origin develop

# 功能测试通过后,再合并到 master
# git checkout master
# git merge feature/new-feature
# git push origin master
git branch -d feature/new-feature
2. Bugfix 分支流程
bash 复制代码
# 从对应分支创建修复分支
git checkout develop  # 或受影响的分支
git checkout -b bugfix/issue-description

# 修复完成后合并
git checkout develop
git merge bugfix/issue-description
git push origin develop
3. Hotfix 分支流程
bash 复制代码
# 从 master 创建热修复分支
git checkout master
git checkout -b hotfix/critical-fix

# 修复完成后同时合并到 master 和 develop
git checkout master
git merge hotfix/critical-fix
git tag v1.2.1
git push origin master --tags

git checkout develop
git merge hotfix/critical-fix
git push origin develop
4. Release 分支流程
bash 复制代码
# 从 master 创建发布分支(基于稳定版本)
git checkout master
git pull origin master
git checkout -b release/v1.3.0

# 版本号更新、文档完善、最终测试...

# 发布完成后合并回 master 并打标签
git checkout master
git merge release/v1.3.0
git tag v1.3.0
git push origin master --tags

# 同步到 develop 分支
git checkout develop
git merge release/v1.3.0
git push origin develop
git branch -d release/v1.3.0

分支保护规则

Master/Main 分支
  • 禁止直接推送
  • 要求通过 Pull Request 合并
  • 要求代码审查
  • 要求通过 CI/CD 检查
  • 要求线性历史(rebase merge)
Develop 分支
  • 要求通过 Pull Request 合并
  • 要求至少一人审查
  • 要求通过基本测试

提交信息规范

基本格式

ini 复制代码
<类型>[可选的作用域]: <描述>

[可选的正文]

[可选的脚注]

提交类型(Type)

主要类型
  • feat - 新功能(feature)
  • fix - 修复bug
  • docs - 文档变更
  • style - 代码格式调整(不影响代码运行)
  • refactor - 重构(既不是新增功能,也不是修复bug)
  • test - 添加或修改测试
  • chore - 构建过程或辅助工具的变动
扩展类型
  • perf - 性能优化
  • build - 构建系统或外部依赖项的更改
  • ci - CI配置文件和脚本的更改
  • revert - 回滚之前的提交
  • remove - 删除功能或文件
  • update - 更新依赖或配置
  • security - 安全相关修复

作用域(Scope)

作用域用于指定本次提交影响的范围,可选项包括:

按功能模块
scss 复制代码
feat(auth): 添加用户登录功能
fix(payment): 修复支付超时问题
docs(api): 更新API文档
按文件类型
scss 复制代码
style(css): 调整按钮样式
test(unit): 添加用户模块单元测试
build(webpack): 优化打包配置
按组件
scss 复制代码
feat(header): 添加导航菜单
fix(modal): 修复弹窗关闭问题
refactor(table): 重构表格组件

描述(Description)

规则
  • 使用祈使句,现在时态
  • 首字母小写
  • 结尾不加句号
  • 简明扼要,控制在50字符以内
示例
bash 复制代码
# ✓ 良好的描述
feat: 添加用户注册功能
fix: 修复登录按钮点击无响应
docs: 更新安装说明
style: 统一代码缩进格式
refactor: 优化用户查询逻辑

# ✗ 不推荐的描述
feat: 添加了用户注册功能。
Fix: Login button not working
docs: update README.md file
style: Fix indentation
refactor: 用户查询逻辑优化

正文(Body)

当需要更详细说明时使用,应该说明:

  • 为什么做这个变更
  • 与之前行为的对比
  • 变更的动机
scss 复制代码
feat(auth): 添加JWT身份验证

为了提高安全性,将原有的session认证替换为JWT认证。
JWT token将存储在localStorage中,有效期为7天。
这样可以支持跨域认证,便于后续微服务架构。

Closes #123

脚注(Footer)

关联Issue
bash 复制代码
Closes #123
Fixes #456
Resolves #789
Related to #101
破坏性变更
bash 复制代码
BREAKING CHANGE: 删除了旧的API端点 /api/v1/users
请使用新的端点 /api/v2/users

提交示例

基础示例
bash 复制代码
feat: 添加用户头像上传功能
fix: 修复图片压缩失败问题
docs: 添加部署指南
style: 格式化代码缩进
refactor: 重构用户服务类
test: 添加用户模块集成测试
chore: 更新依赖包版本
带作用域示例
bash 复制代码
feat(user): 添加用户资料编辑功能
fix(payment): 修复支付回调处理错误
docs(api): 完善接口文档示例
style(scss): 优化样式文件结构
refactor(auth): 重构认证中间件
test(e2e): 添加端到端测试用例
复杂示例
bash 复制代码
feat(auth): 实现OAuth2.0社交登录

支持通过微信、QQ、微博进行第三方登录
- 添加OAuth2.0客户端配置
- 实现授权码流程
- 集成用户信息同步

Closes #234
Related to #235, #236
bash 复制代码
fix(performance): 优化列表查询性能

- 添加数据库索引
- 实现分页查询
- 增加缓存机制

修复了当数据量超过1000条时页面加载缓慢的问题

Fixes #456
Performance improvement: ~70% faster loading

提交频率建议

推荐做法
  • 每个逻辑单元提交一次
  • 功能开发过程中定期提交
  • 确保每次提交都可以正常运行
  • 避免包含多个不相关的变更
提交时机
bash 复制代码
# ✓ 好的提交节奏
feat: 添加用户注册表单
feat: 实现用户注册验证
feat: 集成短信验证码
test: 添加用户注册测试用例

# ✗ 避免的做法
feat: 完整的用户注册功能(包含太多变更)
fix: 各种bug修复(混合多个修复)

工具集成

Git Hooks
bash 复制代码
# .gitmessage 模板
# <类型>[作用域]: <描述>
# 
# [正文]
# 
# [脚注]
Commitizen 配置
json 复制代码
{
  "config": {
    "commitizen": {
      "path": "cz-conventional-changelog"
    }
  }
}
Commitlint 规则
javascript 复制代码
module.exports = {
  extends: ['@commitlint/config-conventional'],
  rules: {
    'type-enum': [2, 'always', [
      'feat', 'fix', 'docs', 'style', 'refactor', 
      'test', 'chore', 'perf', 'build', 'ci', 
      'revert', 'remove', 'update', 'security'
    ]],
    'subject-max-length': [2, 'always', 50],
    'subject-case': [2, 'always', 'lower-case']
  }
};

最佳实践

分支管理

  1. 保持分支简洁 - 及时删除已合并的分支
  2. 定期同步 - 经常从主分支拉取最新代码
  3. 小步快跑 - 功能分支不要过大,及时合并
  4. 命名一致 - 团队内统一分支命名规范

提交管理

  1. 原子性提交 - 每次提交只包含一个逻辑变更
  2. 有意义的信息 - 让他人能快速理解变更内容
  3. 测试后提交 - 确保代码可以正常运行
  4. 及时提交 - 不要积累太多变更才提交

代码审查

  1. 强制审查 - 所有代码变更都需要经过审查
  2. 建设性反馈 - 提供具体、可操作的建议
  3. 及时响应 - 快速处理审查请求
  4. 学习心态 - 将审查视为学习和改进的机会

通过遵循这些规范,可以让团队协作更加高效,代码历史更加清晰,项目维护更加容易。

相关推荐
sixgod_h10 分钟前
Threejs源码系列- MathUtils(1)
前端·webgl
lichenyang45311 分钟前
从0开始的中后台管理系统-6(添加用户以及绑定角色给用户动态添加权限,以及在layout父路由组件去进行路径跳转判断)
前端
小高00712 分钟前
协商缓存和强缓存
前端·javascript·面试
用户479492835691513 分钟前
你真的很了解eslint吗?(代码检查工具的历史变革及底层原理)
前端
前端Hardy14 分钟前
HTML&CSS&JS:超酷炫的一键登录页面
前端·javascript·css
七十二時_阿川17 分钟前
React上下文之useContext
前端·程序员
sorryhc25 分钟前
CSR秒开有可能么?(附AI驱动学习实践推理过程)
前端·javascript·ai编程
龙井>_<39 分钟前
vue项目封装axios请求,支持判断当前环境及判断token是否过期等等(详细教程,可复制粘贴代码)
前端·javascript·vue.js·前端框架
Hashan44 分钟前
微信小程序:实现证件OCR识别
前端·vue.js·微信小程序
vaelcy1 小时前
css3实现登录框动画特效效果
前端·css