一. 什么是 Gitmoji ?

image.png
Gitmoji 是一套使用 Emoji 规范化提交信息的工作流指导,表情符号不仅美观而且可以从表情中标识提交内容的意图,也方便后期的自动化生成更新文档。

一个典型的 Gitmoji 提交分为三个部分:

  • Intention:意图,为 Gitmoji 提供的表情列表中的一个。
  • Scope:范围,可选,提供变更的上下文范围。
  • Message: 消息,具体的变更内容简述。
    1. <intention> [scope?][:?] <message>
    比方说:
    1. 🎨 list: add demo

    二. 如何使用?

Gitmoji 提供多种使用方式,如命令行,Webstorm 插件,VsCode 插件等。

1. 命令行-client模式

https://github.com/carloscuesta/gitmoji-cli

安装:

  1. npm i -g gitmoji-cli

唤起 gitmoji 提交:

  1. gitmoji -c

命令行中会交互式的让你选择你要使用的 Gitmoji,以及添加其他信息。

  1. techui-studio git:(test/sortable-list) gitmoji -c
  2. ? Choose a gitmoji: (Use arrow keys or type to search)
  3. 🎨 - Improve structure / format of the code.
  4. ⚡️ - Improve performance.
  5. 🔥 - Remove code or files.
  6. 🐛 - Fix a bug.
  7. 🚑️ - Critical hotfix.
  8. - Introduce new features.
  9. 📝 - Add or update documentation.
  10. (Move up and down to reveal more choices)

2. 命令行-hook 模式

初始化后,普通的git commit 提交后会自动调用 gitmoji 的交互式提交方式。

  1. $ gitmoji -i // 执行初始化操作,添加 hook git commit
  2. $ git add .
  3. $ git commit

注意这种方式和 client 模式不可同时使用

3. 编辑器插件

除了命令行方式之外,你还可以选择编辑器插件,比如 VSCode 或者 WebStorm 插件。这里 VSCode 插件会在源代码管理 tab 下 添加 emoji 的输入快捷键。
image.png

4. 平台不显示emoji?

有时候我们在本地使用 gitmoji 生成了规范格式的提交,但到平台上发现是这样的 :recycle:,默认提交的是 emoji 码。
5DD94B69-9502-442F-B896-BA0B74C44CB7.png

但我们希望在系统中显示的是这样的:
19A24409-7357-461D-B772-9BBDC676F284.png
为此你需要通过 gitmoji -g来指定在提交中用哪种类型的 emoji 形式:
3BBE1860-53A7-4F47-ABC5-89B6B85C4F0B.png

三. 自动化 ChangeLog

主要使用 conventional-changelog-cli,需要注意的是 gitmoji 本身的表情码和 conventionnal-changelog-cli不兼容,所以如果是命令行方式的提交,建议切换为 emoji 形式,然后自己在提交信息中添加类型码。

  1. husky > npm run -s precommit (node v16.13.0)
  2. 🐟🐟🐟 Using @alipay/bigfish@3.9.32 and umi@3.5.23... 🐟🐟🐟
  3. Preparing...
  4. Running tasks...
  5. Applying modifications...
  6. Cleaning up...
  7. ? Choose a gitmoji: - feat: introduce new features | 添加新功能
  8. ? Enter the commit title [34/48]: feat: 给字段选择器添加 CollapseTitle 可收起能力
  9. ? Enter the commit message: # 说明将会终止提交。
  10. [feat/tree-select 7384139] feat: 给字段选择器添加 CollapseTitle 可收起能力
  11. 4 files changed, 23 insertions(+), 13 deletions(-)

安装依赖:

  1. "conventional-changelog-cli": "~2.1.1",
  2. "conventional-changelog-gitmoji-config": "^1.4.3",

添加生成 changeLog 的 script 。

  1. "changelog": "conventional-changelog -p gitmoji-config -i CHANGELOG.md -s",

注意 conventional-changelog-cli基于 tag 生成比对。所以在运行脚本前先 git tag一次。

四. 参考

Gitmoji Commit Workflow 完全指南