✍️关于commit message

230 阅读4分钟

在 Git 的提交信息(commit message)中,带有括号的写法是一种常见的规范,用于更清晰地描述提交的内容和范围。这种写法通常遵循一定的格式和约定,以下是详细的解释:

1. 基本格式

<type>(<scope>): <subject>
  • <type>:表示提交的类型,例如 feat(新功能)、fix(修复)、docs(文档)等。
  • <scope>:表示提交影响的范围,通常是一个具体的模块或文件名,例如 READMEapiui 等。
  • <subject>:简短描述提交的内容。

2. 示例

  • docs(README): update installation instructions
    这表示这是一个文档相关的提交,主要修改了 README 文件,内容是更新了安装说明。
  • fix(api): handle null values correctly
    这表示这是一个修复相关的提交,影响范围是 api 模块,内容是正确处理了空值。

3. 常见类型(<type>

  • feat:新功能(feature)
  • fix:修复(bug fix)
  • docs:文档(documentation)
  • style:代码格式化(不影响代码逻辑)
  • refactor:代码重构(既不添加功能也不修复错误)
  • perf:性能优化(performance improvement)
  • test:添加测试(测试用例)
  • chore:构建过程或辅助工具的变动(例如更新依赖)

4. 作用

  • 清晰性:通过明确的类型和范围,其他开发者可以快速了解提交的性质和影响范围。
  • 可维护性:有助于自动化工具(如版本号管理工具、发布工具等)解析提交信息,从而实现自动化操作。
  • 一致性:团队成员遵循统一的提交信息格式,可以提高代码库的可读性和可维护性。

5. 扩展格式(一般大型项目使用,大部分场景使用不到)

在一些更复杂的项目中,提交信息还可以包含更详细的内容,例如:

<type>(<scope>): <subject>

<body>

<footer>
  • <body>:详细描述提交的内容,可以包括问题的背景、解决方案等。
  • <footer>:可以包含修复的 Issue 编号、Breaking Changes 等信息。

例如:

feat(api): add user authentication

Add user authentication endpoints to the API.
This includes login and logout functionality.

Fixes #123

这种格式在大型项目中非常有用,因为它提供了更全面的信息,方便其他开发者理解和审查代码。

总之,带有括号的提交信息是一种规范化的写法,有助于提高团队协作效率和代码库的可维护性。

6. 【总结向】你也许会用到的scope

在 Git 提交信息中,<scope>(范围)部分用于描述提交影响的具体模块或功能区域。它可以是文件名模块名功能名等,具体取决于项目的结构和需求。以下是一些常见的范围示例,按不同项目类型和场景分类:

1. 前端项目

  • 组件名
    • Header:头部组件
    • Footer:底部组件
    • UserProfile:用户资料组件
    • LoginModal:登录模态框
  • 页面名
    • HomePage:首页
    • Dashboard:仪表盘
    • ProductList:产品列表页
  • 功能模块
    • auth:认证模块
    • cart:购物车模块
    • search:搜索模块

2. 后端项目

  • API 端点
    • user:用户相关 API
    • order:订单相关 API
    • product:产品相关 API
  • 服务模块
    • database:数据库相关操作
    • cache:缓存相关操作
    • payment:支付模块
  • 中间件
    • authMiddleware:认证中间件
    • logger:日志中间件
    • rateLimiter:限流中间件

3. 文档

  • 文件名
    • README:主文档文件
    • CONTRIBUTING:贡献指南
    • CHANGELOG:变更日志
  • 文档部分
    • installation:安装指南
    • usage:使用说明
    • api:API 文档

4. 测试

  • 测试类型
    • unit:单元测试
    • integration:集成测试
    • e2e:端到端测试
  • 测试模块
    • user:用户模块测试
    • api:API 测试
    • ui:UI 测试

5. 工具和脚本

  • 构建工具
    • webpack:Webpack 配置
    • babel:Babel 配置
    • eslint:ESLint 配置
  • 脚本
    • deploy:部署脚本
    • build:构建脚本
    • lint:代码检查脚本

6. 其他常见范围

  • ui:用户界面相关
  • ux:用户体验相关
  • config:配置文件
  • styles:样式文件(CSS/SCSS)
  • scripts:脚本文件
  • tests:测试文件
  • utils:工具函数或模块
  • models:数据模型
  • views:视图模板
  • controllers:控制器
  • services:服务层
  • routes:路由配置
  • database:数据库相关操作
  • cache:缓存相关操作
  • security:安全相关操作
  • performance:性能优化相关

7. 项目特定范围

在实际项目中,<scope> 的选择应根据项目的具体结构和需求来定义。例如:

  • 如果项目是一个电商网站,可能会有 productcartcheckout 等范围。
  • 如果项目是一个移动应用,可能会有 loginprofilesettings 等范围。

8. 示例

以下是一些具体的提交信息示例:

  • feat(user): add user profile page
    新增用户资料页面。
  • fix(api): handle null values in user endpoint
    修复用户 API 中的空值处理问题。
  • docs(README): update installation instructions
    更新 README 中的安装说明。
  • style(ui): update button styles
    更新按钮样式。
  • test(unit): add tests for user model
    为用户模型添加单元测试。
  • chore(deploy): update deployment script
    更新部署脚本。

9. 最后

上方的内容几乎涵盖了git message 你可能会用到的大部分内容,需要的时候看看即可,久了就熟练了。

ok,收摊🍜