Git 代码提交规范详解:feat, fix, chore 等关键词的含义与最佳实践
在日常开发中,你是否经常看到别人的代码提交记录(Commit Log)里充满了 feat、fix、chore 等各种英文单词,而自己在提交时却往往只写"update"或者"修改bug"?
在日常开发中,你是否经常看到别人的代码提交记录(Commit Log)里充满了 feat、fix、chore 等各种英文单词,而自己在提交时却往往只写"update"或者"修改bug"?
其实,这是一种代码提交规范(Conventional Commits)。这并不是为了炫技,而是为了提高提交记录的可读性,让团队协作更顺畅,同时也便于自动化工具(如发布工具或 Changelog 生成器)解析和处理提交记录。
今天,我就结合实际案例,来和大家详细聊聊这些单词到底是什么意思,以及如何写出规范的 Commit Message。
为什么要规范提交?
在看开源项目(如 Element Plus)的 Commit 记录时,你会发现它们的记录非常清晰:
chore: update doc ui
style(components): [select& select-v2] remove split dash
feat(components): [select & select-v2] add label slot
fix(components): [color-picker] attr s class
这种规范化的提交信息,能让协作者一眼看出这次提交是"新增功能"、"修复 Bug"还是"调整文档"。它不仅让项目历史更加模块化、易于维护,还能帮助自动化工具判断版本号的变更(例如是否需要发布新版本)。
Git 提交规范详解
一个标准的 Commit Message 通常遵循以下格式:
<type>(<scope>): <subject>或者简单的:
<type>: <message>其中,type(类型)是最核心的部分,它决定了这次提交的性质。以下是我在开发中最常用到的几种类型:
1. feat:新功能
含义:表示引入了新功能(Feature)。
场景:当你为项目增加了新的模块、接口或用户可见的功能时使用。
示例:
feat: 增加用户注册功能
feat(login): add wechat login button
2. fix:修复 Bug
含义:表示修复了 Bug。
场景:当你解决了代码中的错误、崩溃或逻辑漏洞时使用。
示例:
fix: 修复登录页面崩溃的问题
fix(header): prevent overflow in IE3. docs:文档变更
含义:仅涉及文档的修改。
场景:更新 README、修改注释、或者调整文档内容,而不改动源代码时。
示例:
docs: 更新 README 文件
docs: add api documentation4. style:代码风格调整
含义:代码格式调整,不影响代码逻辑。
场景:格式化代码、调整缩进、删除多余空行、修改分号等。这些修改不会改变代码的运行结果。
示例:
style: 删除多余的空行
style: format code according to prettier5. refactor:代码重构
含义:既不是新增功能也不是修复 Bug 的代码更改。
场景:对现有代码进行优化、重写或结构调整,目的是提高代码质量或可读性。
示例:
refactor: 重构用户验证逻辑
refactor: extract utils function6. perf:性能优化
含义:提升代码性能的修改。
场景:通过修改代码显著提升了应用的运行速度或资源利用率。
示例:
perf: 优化图片加载速度
perf: improve rendering speed7. test:增加测试
含义:添加或修改测试用例。
场景:编写单元测试、集成测试等。
示例:
test: 增加用户模块的单元测试
test: fix failing snapshot test8. chore:杂项(构建过程或辅助工具)
含义:构建过程或辅助工具的变动。
场景:更新构建脚本、修改配置文件、更新依赖库(如 package.json)等,这些改动不直接影响源代码逻辑。
示例:
chore: 更新依赖库
chore: add gitignore file9. build:构建系统变更
含义:影响构建系统的更改。
场景:升级 Webpack、Vite 等构建工具的版本,或者修改打包配置。
示例:
build: 升级 webpack 到版本 510. ci:持续集成配置变更
含义:修改 CI 配置文件和脚本。
场景:修改 GitHub Actions、Travis CI 等配置文件。
示例:
ci: 修改 GitHub Actions 配置文件11. revert:回滚
含义:撤销之前的提交。
场景:当需要回退到某个历史版本时使用。
示例:
revert: 回滚 feat: 增加用户注册功能类型速查表
为了方便记忆,我整理了以下表格:
| 类型 (Type) | 含义 | 典型场景 |
|---|---|---|
| feat | 新功能 | 增加按钮、新接口 |
| fix | 修复 Bug | 修复崩溃、逻辑错误 |
| docs | 文档变更 | 修改 README、注释 |
| style | 代码风格 | 格式化、空行调整 |
| refactor | 代码重构 | 优化逻辑、重写模块 |
| perf | 性能优化 | 提升加载速度 |
| test | 测试 | 增加单元测试 |
| chore | 杂项 | 更新依赖、配置文件 |
| build | 构建变更 | 打包工具升级 |
| ci | 持续集成 | CI 配置修改 |
| revert | 回滚 | 版本回退 |
总结与建议
使用规范的提交消息(Commit Message)是专业开发者的良好习惯。
虽然如果团队没有强制要求,不这么写也可以完成工作,但规范的提交记录是团队协作效率的重要保障。它能让项目更加模块化、易于维护和理解。
建议:从今天开始,尝试在你的下一次 Commit 中使用 feat: 或 fix: 等前缀。如果你的团队规模较大,还可以引入 commitlint + husky 等工具来强制校验提交格式,或者使用 Commitizen 来引导填写规范的提交信息。
希望这篇文章能帮到你,如果你觉得有用,欢迎点赞分享!
原创文章,作者:ECHO陈文,如若转载,请注明出处:https://www.luweipai.cn/php/1778555057/