在 Git 的提交信息(commit message)中,带有括号的写法是一种常见的规范,用于更清晰地描述提交的内容和范围。这种写法通常遵循一定的格式和约定,以下是详细的解释:
1. 基本格式
<type>(<scope>): <subject>
<type>:表示提交的类型,例如feat(新功能)、fix(修复)、docs(文档)等。<scope>:表示提交影响的范围,通常是一个具体的模块或文件名,例如README、api、ui等。<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:用户相关 APIorder:订单相关 APIproduct:产品相关 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> 的选择应根据项目的具体结构和需求来定义。例如:
- 如果项目是一个电商网站,可能会有
product、cart、checkout等范围。 - 如果项目是一个移动应用,可能会有
login、profile、settings等范围。
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,收摊🍜