git commit编写
📝 Git Commit 规范化教程
目前业界最主流的规范是 Conventional Commits (约定式提交)。它将提交信息分为:类型 (Type)、范围 (Scope, 可选) 和 描述 (Subject)。
1. 标准格式结构
2. 核心组成部分详解
① Type(类型):必填
用于说明这次提交的性质。常用的标签如下:
| 标签 | 说明 | 适用场景 |
|---|---|---|
| feat | 新功能 | 增加了新的 OCaml 模块或函数 |
| fix | 修补 Bug | 修复了逻辑错误或崩溃 |
| docs | 文档 | 修改了 README、注释或说明文件 |
| style | 格式 | 不影响代码含义的修改(空格、格式化、分号等) |
| refactor | 重构 | 既不是新增功能也不是修改 Bug 的代码变动 |
| perf | 性能 | 提高性能的代码更改 |
| test | 测试 | 添加缺失测试或更正现有的测试 |
| chore | 事务 | 构建过程或辅助工具的变动(如更新 .gitignore) |
② Scope(范围):可选
说明提交影响的范围。例如:(parser), (lexer), (README)。
③ Subject(主题):必填
对变动的简短描述。
- 不要超过 50 个字符。
- 结尾不加句号。
- 尽量使用动词开头(如
add,update,fix)。
3. 规范示例
✅ 正面典型(好例子)
feat(lexer): add support for floating point numbersfix(eval): prevent stack overflow in recursive callsdocs: update installation steps in READMEchore: add _build directory to .gitignore
❌ 反面典型(避坑)
fix: bug(没说修了啥)update(毫无意义)完成实验一(不符合 Type 规范,难以检索)
4. 进阶:如何写 Body 和 Footer?
如果你的改动非常复杂,短句写不下,就需要用到 Body。
feat(compiler): implement pattern matching for lists
The current evaluator only supports basic integers. This commit
adds support for list matching using the `::` operator.
Fixes #42
- Body: 解释代码改动的原因和逻辑,而不是翻译代码(代码 Git 已经存了)。
- Footer: 通常用于关闭 GitHub Issue(如
Fixes #编号)。
5. 在终端编写的技巧
如果你想写多行 Commit,不要加 -m 参数:
- 输入
git commit。 - Git 会自动打开你默认的编辑器(通常是 Vim 或 Nano)。
- 在里面按照格式写好后保存退出,提交就完成了。
如果你只想写简单的单行: