# 一. 格式化
每次提交,Commit message 都包括两个核心部分:标题 和 内容。
<类型>(可选): <主题>
// 空一行
<内容>
2
3
其中,标题是必需的,内容无需过多描述的话,正文内容部分可以省略。
不管是哪一个部分,任何一行都不得超过 72 个字符(或 100个字符)。这是为了避免自动换行影响美观。
# 二.标题
标题部分只有一行,包括字段:类型 和 主题。(标题限制总字数在 50 个字符以内,以保证容易阅读。)
# 1.类型
1.1 类型 用于说明 commit 的类别,只允许使用下面 7 个标识。
- init: 项目初始化(用于项目初始化或其他某种行为的开始描述,不影响代码)
- feat: 新功能(feature)
- fix: 修补 bug
- docs: 文档(documentation)
- opt: 优化和改善,比如弹窗进行确认提示等相关的,不会改动逻辑和具体功能等
- style: 格式(不影响代码运行的变动)
- refactor: 重构(即不是新增功能,也不是修改 bug 的代码变动)
- test: 增加测试
- save: 单纯地保存记录
- other: 用于难以分类的类别(不建议使用,但一些如删除不必要的文件,更新.ignore 之类的可以使用)
1.2 (可选) 类型后面可以加上括号,括号内填写主要变动的范围
比如按功能模块分,某模块;或按项目三层架构模式分,分数据层、控制层之类的。
- #:表示模块
- #student --> 表示 学生模块 (具体的模块开头字母小写,驼峰命名)
#ALL --> 表示 所有模块 (特殊含义如 ALL 表所有,MOST 表大部分,用大写字母表示)
#MOST --> 表示 大部分模块
e.g.
feat(#student): 新增添加学生的功能 —— 表示 student 模块新增功能,功能是添加学生
# 2.主题
主题是commit目的的简短描述,不超过 50 个字符。
以动词开头,使用第一人称现在时,比如 change,而不是 changed 或 changes
第一个字母小写
结尾不加句号(.)
# 三.内容
内容部分是对本次 commit 的详细描述,可以分成多行,正文在 72 个字符处换行。
使用正文解释是什么(what)和为什么(why),而不是如何做,以及与以前行为的对比。
e.g:
balabala : balabala
what:
balabala
why:
balabala
2
3
4
5
6
7
# 四.好处
- 提供更多的历史信息,方便快速浏览
使用git log可得到历史commit的信息
- 可以过滤某些 commit(比如文档改动),便于快速查找信息
关于更多 git log 的输出格式,可参考:个性化你的 Git Log 的输出格式 (opens new window)
# 五. 总结
正确的 git 提交建议:
1、不同的要分别分次提交,(这里不同指,如:不同的修改类型,不同的模块,不同的功能等)
2、提交的信息要进行一定程度的格式化。
# 六. git commit 提交 emoji 图标对照表
| emoji | 代码 | 说明 |
|---|---|---|
| 🎨 (调色板) | :art: | 改进代码结构/代码格式 |
| ⚡️ (闪电)🐎 (赛马) | :zap:“:racehorse: | 提升性能 |
| 🔥 (火焰) | :fire: | 移除代码或文件 |
| 🐛 (bug) | :bug: | 修复 bug |
| 🚑 (急救车) | :ambulance: | 重要补丁 |
| ✨ (火花) | :sparkles: | 引入新功能 |
| 📝 (备忘录) | :memo: | 撰写文档 |
| 🚀 (火箭) | :rocket: | 部署功能 |
| 💄 (口红) | :lipstick: | 更新 UI 和样式文件 |
| 🎉 (庆祝) | :tada: | 初次提交 |
| ✅ (白色复选框) | :white_check_mark: | 增加测试 |
| 🔒 (锁) | :lock: | 修复安全问题 |
| 🍎 (苹果) | :apple: | 修复 macOS 下的问题 |
| 🐧 (企鹅) | :penguin: | 修复 Linux 下的问题 |
| 🏁 (旗帜) | :checked_flag: | 修复 Windows 下的问题 |
| 🔖 (书签) | :bookmark: | 发行/版本标签 |
| 🚨 (警车灯) | :rotating_light: | 移除 linter 警告 |
| 🚧 (施工) | :construction: | 工作进行中 |
| 💚 (绿心) | :green_heart: | 修复 CI 构建问题 |
| ⬇️ (下降箭头) | :arrow_down: | 降级依赖 |
| ⬆️ (上升箭头) | :arrow_up: | 升级依赖 |
| 👷 (工人) | :construction_worker: | 添加 CI 构建系统 |
| 📈 (上升趋势图) | :chart_with_upwards_trend: | 添加分析或跟踪代码 |
| 🔨 (锤子) | :hammer: | 重大重构 |
| ➖ (减号) | :heavy_minus_sign: | 减少一个依赖 |
| 🐳 (鲸鱼) | :whale: | Docker 相关工作 |
| ➕ (加号) | :heavy_plug_sign: | 增加一个依赖 |
| 🔧 (扳手) | :wrench: | 修改配置文件 |
| 🌐 (地球) | :globe_with_meridians: | 国际化与本地化 |
| ✏️ (铅笔) | :pencil2: | 修复 typo |
# 参考
[1] https://www.cnblogs.com/deng-cc/p/6322122.html
[2] http://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html