git的提交规范
1. Git 规范
1.1 基本的 Commit 信息格式
一个常见的提交信息格式通常包括以下几个部分:
- 类型(type): 描述提交的类别,比如是新功能、修复、文档等。
- 范围(scope): 可选,描述提交影响的范围,比如是某个模块、功能等。
- 主题(subject): 简短的描述提交的目的。
- 正文(body): 可选,详细描述提交的内容、动机等。
- 页脚(footer): 可选,通常用于关闭某个 issue 或者添加破坏性变更的说明。
1.2 常见的类型(type)
直接判断:这个提交是否值得出现在最终的发行版上线日志(CHANGELOG)里?
- 如果是,那它很可能是 feat 或 fix。
- 如果否,那它更可能是 refactor, style, chore 等其他类型。
常见:
- feat: 新功能 (feature)
- 判断标准: 这次提交是否增加了代码库的新能力?
- feat: 实现网站的暗黑模式切换
- fix: 修复 bug
- 判断标准: 这次提交是否修正了一个不正确的行为?
- fix:解决 Safari 浏览器下日期显示不正确的问题
- refactor: 代码重构(既不是新增功能,也不是修复 bug)
- 判断标准: 用户或测试人员感觉不到任何变化,但代码变得更 “ 好 “ 了(更清晰、更高效、更易于扩展)。
- refactor:移除重复的代码块,抽象成一个通用函数
- docs: 文档修改
- 判断标准: 只改动了
.md文件或代码里的注释。 - docs: 更新 README,补充项目本地启动步骤
- 判断标准: 只改动了
- style: 代码格式修改(不影响代码逻辑,如空格、分号等)
- 判断标准: 由 Prettier、ESLint 等格式化工具自动生成的改动,或者手动调整了代码外观。
- style: 移除多余的空行和未使用的 import 语句
- test: 增加或修改测试
- 判断标准: 只修改了测试文件(如
*.test.js,*.spec.js)或测试配置文件。 - test(login): 为登录成功和失败的场景添加单元测试
- 判断标准: 只修改了测试文件(如
- perf: 性能优化
- revert: 回滚某个先前的提交
- build: 修改构建系统或外部依赖(如 a.js、npm)
- 判断标准: 是否修改了
package.json、webpack.config.js、vite.config.js、pom.xml这类文件? - build(deps): 添加 axios 库用于网络请求
- 判断标准: 是否修改了
- ci: 修改 CI/CD 配置文件和脚本
- 判断标准: 是否修改了 .github/workflows/、.travis.yml、Dockerfile 这类文件?
- ci: 优化 Docker 镜像构建,减少镜像大小
- chore: 其他不修改源码或测试的提交(杂项,其他不属于以上任何类型的琐碎修改,通常是辅助性的工具或配置改动。)
- 判断标准: “ 家务活 “,不修改源代码、不修改测试、不修改构建和 CI,但又是必要的改动。
- chore: 更新 .gitignore 文件,忽略 .env 本地配置文件
1.3 示例
1 | git commit -m "feat(auth): add login functionality" |
2. 规范工具
2.1 CZ AI
1 | npm install -g cz-git commitizen |
- 配置文件
~/.config/.czrc - 黑盒的,不能自定义,默认输出英文
- 目前:deepseek-ai/DeepSeek-V3.2
2.2 使用 Sgpt
- 最终依赖 sgpt,pip install shell-gpt
- 配置:
~/.config/shell_gpt/.sgptrc,修改 API_BASE_URL 和 apikey - 目前:google/gemini-2.5-flash
1 | # 核心 git ai 使用, 注意使用的 git diff HEAD |
2.3 使用 Ai Commit
原理是 git diff 结果,交给 open ai。
1 | npm install -g aicommits |
2.4 Obsidian Git
在插件的 commit message script 里填写:
1 | git diff HEAD -- ':(exclude).obsidian/plugins' ':(exclude).smart-env' | /opt/anaconda3/bin/sgpt '你是一位资深的软件工程师,擅长编写清晰、规范的 Git 提交信息。根据我提供的内容,生成一条符合「约定式提交规范」的中文 Git 提交信息。要 求: 1. 格式: 严格遵循 `<类型>(<范围>): <主题>` 的格式。常用类型: `feat`(新功能), `fix`(修复), `refactor`(重构), `style`(格式), `docs`(文档), `perf`(性能), `ci`(持续集成), `chore`(杂务)。2.内容: 用言简意赅的中文进行描述。只描述核心的、用户可感知或对开发者重要的变更。省略不重要的细节 ,如修改变量名、调整缩进等(除非是`style`类型的提交)。3. 输出:不要添加任何前言、解释或思考过程,直接输出最终的提交信息,且仅输出一条。' |