分支管理和提交信息规范

分支管理和提交信息规范

分支管理规范

分支类型

主要分支
  • 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. 学习心态 - 将审查视为学习和改进的机会

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

相关推荐
BBB努力学习程序设计6 分钟前
CSS Sprite技术:用“雪碧图”提升网站性能的魔法
前端·html
BBB努力学习程序设计12 分钟前
CSS3渐变:用代码描绘色彩的流动之美
前端·html
冰暮流星21 分钟前
css之动画
前端·css
jump6801 小时前
axios
前端
spionbo1 小时前
前端解构赋值避坑指南基础到高阶深度解析技巧
前端
用户4099322502121 小时前
Vue响应式声明的API差异、底层原理与常见陷阱你都搞懂了吗
前端·ai编程·trae
开发者小天1 小时前
React中的componentWillUnmount 使用
前端·javascript·vue.js·react.js
永远的个初学者1 小时前
图片优化 上传图片压缩 npm包支持vue(react)框架开源插件 支持在线与本地
前端·vue.js·react.js
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ1 小时前
npm i / npm install 卡死不动解决方法
前端·npm·node.js
Kratzdisteln2 小时前
【Cursor _RubicsCube Diary 1】Node.js;npm;Vite
前端·npm·node.js