git commit 配上 emoji 表情,很有儀式感

大家好,我是零一,今天給大家帶來的是關於 git commit 那些事兒,希望大家喜歡。

對於規範 git commit message 我是分成了兩種類型去看待。

通過本篇文章你講了解到三部分內容:

  1. 瞭解 git commit 規範

  2. 學到用工具 Commitizen 來規範 commit

  3. 學到如何在 commit message 里加上好看的 emoji

規範

現在主流的 commit message 規範就是 Angular 團隊所用的準則 [1],繼而衍生了 Conventional Commits specification[2]. 很多工具也是基於此規範。

每次提交,Commit message 都包括三個部分:header,body 和 footer,其中 header 有一個特殊的格式,包括了 type、scope、subject。

<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

其中 header 是必選的,但是 header 裏的 scope 是可選的,另外提交的 message 長度不要超過 100 個字符,太長了不易閱讀。

對於我個人來說,我覺得只要把 header 部分規範其實基本能滿足絕大部分需要了,強制去規範 body 和 footer 對於團隊的同學來說簡直是折磨,所以我這裏僅介紹 header 的幾部分

type

type 指明 git commit 的類別,應該使用以下類型

這裏面有些 angular 團隊沒有,自己可以自行增減

scope(可選)

scope 用於說明 commit 影響的範圍,根據不同項目有不同層次描述。若沒有特殊規定,也可以描述影響的哪些功能等。

subject

subject 是 commit 目的的簡短描述,不超過 50/80 個字符,一般 git 提交的時候會有顏色提示。

工具:Commitizen

Commitizen 是一個撰寫合格 Commit message 的工具,(詳細說明見 github 地址 [3]),用於代替 git commit 指令,而 cz-conventional-changelog 適配器提供 conventional-changelog 標準(約定式提交標準)。基於不同需求,也可以使用不同適配器。

  1. 全局安裝 commitizen cz-conventional-changelog
npm install -g commitizen cz-conventional-changelog
  1. git cz 取代 git commit

安裝完畢後,可直接使用 git cz 來取代 git commit。

可以看到當你 cz 之後,下面有很多的 type 讓你選擇,這就省掉了每次你去想應該用哪種 type,非常方便。

全局模式下,需要 ~/.czrc 配置文件, 爲 commitizen 指定 Adapter, 如果你不需要生成 Change Log 可以不用去處理。

只要用了 Commitizen ,就很方便的就規範的大家的 message 。

在 commit message 裏用 emoji

在 git commit 上使用 emoji 提供了一種簡單的方法,僅通過查看所使用的表情符號來確定提交的目的或意圖, 得提交記錄非常好理解,閱讀體驗非常棒。

使用方法

git commit 時直接在註釋中寫入表情符號的代碼部分即可完成表情 emoji 的提交。

舉個栗子:

$ git commit -m ':tada: init commit'
$ git commit -m 'added image to repo :art:'

如果你用 Commitizen,可能不太好把 emoji 放在最前面,因爲咱們操作的空間,就在 git cz 後第三次交互提示,也就是在輸入 header 的 subject 的時候填入,如果是這樣,可以選擇把表情放到最後。

效果展示:

如果你們團隊是一個喜歡用 emoji 的團隊,其實可以不用遵循上面的一節的規範,因爲 emoji 已經可以表達出 header 的 type 的作用了,直接在 emoji 後面加描述即可。

emoji 表情庫

Y55gyE

如何在命令行中顯示 emoji

默認情況下,在命令行中並不會顯示出 emoji, 僅顯示 emoji 代碼。不過可以使用 emojify 使得在命令行也可顯示 emoji, 它是一個 shell 腳本,安裝與使用都很簡單,在這裏 [4] 查看更詳細的如何安裝與使用。

安裝 emojify

$ sudo sh -c "curl https://raw.githubusercontent.com/mrowa44/emojify/master/emojify -o /usr/local/bin/emojify && chmod +x /usr/local/bin/emojify"

使用 emojify

$ emojify "Hey, I just :raising_hand: you, and this is :scream: , but here's my :calling: , so :telephone_receiver: me, maybe?"

顯示效果:

在使用 git bash 的時候,設置替換日誌中的表情符號代碼

$ git log --oneline --color | emojify | less -r

或者設置 git log 命令別名

alias gitlog='git log --oneline --color | emojify | less -r'

$ gitlog

效果如下:

是不是很好玩,快去試試吧!

參考資料

參考資料

[1] Angular 團隊所用的準則: https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines

[2] Conventional Commits specification: https://link.zhihu.com/?target=https%3A//conventionalcommits.org/

[3] 見 github 地址: https://github.com/commitizen/cz-cli

[4] 這裏: https://github.com/mrowa44/emojify

[5] git-emoji-guide: https://hooj0.github.io/git-emoji-guide/

[6] git commit 時使用 Emoji ?: https://zhuanlan.zhihu.com/p/29764863

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/_Cvy6zC6FuX_8ziT7_RmEA