# 一. 格式化

每次提交,Commit message 都包括两个核心部分:标题 和 内容。

<类型>(可选): <主题>
// 空一行
<内容>
1
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
1
2
3
4
5
6
7

# 四.好处

  1. 提供更多的历史信息,方便快速浏览

使用git log可得到历史commit的信息

  1. 可以过滤某些 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