【推薦】git commit 規(guī)范和如何在 commit 里使用 emoji

前言

大家好或渤,我是桃翁旺罢,今天給大家?guī)?lái)的是關(guān)于 git commit 那些事兒旷余,希望大家喜歡。

對(duì)于規(guī)范 git commit message 我是分成了兩種類(lèi)型去看待扁达。

  • 對(duì)于通用庫(kù)正卧、開(kāi)源項(xiàng)目這類(lèi)多人維護(hù),而且極大可能別人會(huì)來(lái)看這份代碼的跪解,一定要規(guī)范炉旷,特別是對(duì)于開(kāi)源項(xiàng)目,往往會(huì)要列 Change Log惠遏,規(guī)范好 commit 節(jié)省自己整理 log 的時(shí)間砾跃,也方便了用戶。

  • 對(duì)于業(yè)務(wù)代碼节吮,特別是那種一個(gè)人維護(hù)的抽高,其實(shí)不搞問(wèn)題也不大,因?yàn)闃O小可能會(huì)有人來(lái)看你的 commit message透绩。但是我依然還是建議規(guī)范一下翘骂,不然一旦后面想去看就會(huì)花費(fèi)很多的力氣,畢竟規(guī)范一下也不麻煩帚豪。

通過(guò)本篇文章你講了解到三部分內(nèi)容:

  1. 了解 git commit 規(guī)范

  2. 學(xué)到用工具 Commitizen 來(lái)規(guī)范 commit

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

規(guī)范

現(xiàn)在主流的 commit message 規(guī)范就是 Angular 團(tuán)隊(duì)所用的準(zhǔn)則碳竟,繼而衍生了 Conventional Commits specification. 很多工具也是基于此規(guī)范。

每次提交狸臣,Commit message 都包括三個(gè)部分:header莹桅,body 和 footer,其中 header 有一個(gè)特殊的格式烛亦,包括了 type诈泼、scope、subject煤禽。


<type>(<scope>): <subject>

<BLANK LINE>

<body>

<BLANK LINE>

<footer>

其中 header 是必選的铐达,但是 header 里的 scope 是可選的,另外提交的 message 長(zhǎng)度不要超過(guò) 100 個(gè)字符檬果,太長(zhǎng)了不易閱讀瓮孙。

對(duì)于我個(gè)人來(lái)說(shuō)唐断,我覺(jué)得只要把 header 部分規(guī)范其實(shí)基本能滿足絕大部分需要了,強(qiáng)制去規(guī)范 body 和 footer 對(duì)于團(tuán)隊(duì)的同學(xué)來(lái)說(shuō)簡(jiǎn)直是折磨杭抠,所以我這里僅介紹 header 的幾部分

type

type 指明 git commit 的類(lèi)別脸甘,應(yīng)該使用以下類(lèi)型

  • 『feat』: 新增功能

  • 『fix』: 修復(fù) bug

  • 『docs』: 僅僅修改了文檔,比如 README, CHANGELOG等等

  • 『test』: 增加/修改測(cè)試用例祈争,包括單元測(cè)試斤程、集成測(cè)試等

  • 『style』: 修改了空行、縮進(jìn)格式菩混、引用包排序等等(不改變代碼邏輯)

  • 『perf』: 優(yōu)化相關(guān)內(nèi)容忿墅,比如提升性能、體驗(yàn)沮峡、算法等

  • 『refactor』: 代碼重構(gòu)疚脐,「沒(méi)有新功能或者bug修復(fù)」

  • 『chore』: 改變構(gòu)建流程、或者增加依賴庫(kù)邢疙、工具等

  • 『revert』: 回滾到上一個(gè)版本

  • 『merge』: 代碼合并

這里面有些 angular 團(tuán)隊(duì)沒(méi)有棍弄,自己可以自行增減

scope(可選)

scope用于說(shuō)明 commit 影響的范圍,根據(jù)不同項(xiàng)目有不同層次描述疟游。若沒(méi)有特殊規(guī)定呼畸,也可以描述影響的哪些功能等。

subject

subject 是 commit 目的的簡(jiǎn)短描述颁虐,不超過(guò)50/80個(gè)字符蛮原,一般 git 提交的時(shí)候會(huì)有顏色提示。

  • 若英文用不慣另绩,那么推薦使用中文

  • 若是開(kāi)源代碼儒陨,一律推薦統(tǒng)一英文,英文不行可以翻譯軟件用起來(lái)

  • 若是開(kāi)源代碼笋籽,可以再附加對(duì)應(yīng)的issue地址

  • 結(jié)尾不加標(biāo)點(diǎn)符號(hào)

工具:Commitizen

Commitizen是一個(gè)撰寫(xiě)合格 Commit message 的工具,(詳細(xì)說(shuō)明見(jiàn) github 地址)蹦漠,用于代替 git commit 指令,而 cz-conventional-changelog 適配器提供 conventional-changelog 標(biāo)準(zhǔn)(約定式提交標(biāo)準(zhǔn))车海〉言埃基于不同需求,也可以使用不同適配器侍芝。

1. 全局安裝 commitizen cz-conventional-changelog


npm install -g commitizen cz-conventional-changelog

2. git cz 取代 git commit

安裝完畢后喘沿,可直接使用 git cz 來(lái)取代 git commit。

image

可以看到當(dāng)你 cz 之后竭贩,下面有很多的 type 讓你選擇,這就省掉了每次你去想應(yīng)該用哪種 type莺禁,非常方便留量。

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

只要用了 Commitizen 楼熄,就很方便的就規(guī)范的大家的 message 忆绰。

在 commit message 里用 emoji

在 git commit 上使用 emoji 提供了一種簡(jiǎn)單的方法,僅通過(guò)查看所使用的表情符號(hào)來(lái)確定提交的目的或意圖, 得提交記錄非常好理解可岂,閱讀體驗(yàn)非常棒错敢。

image

使用方法

git commit 時(shí)直接在注釋中寫(xiě)入表情符號(hào)的代碼部分即可完成表情 emoji 的提交。

舉個(gè)栗子:


$ git commit -m ':tada: init commit'

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

如果你用 Commitizen缕粹,可能不太好把 emoji 放在最前面稚茅,因?yàn)樵蹅儾僮鞯目臻g,就在 git cz 后第三次交互提示平斩,也就是在輸入 header 的 subject 的時(shí)候填入亚享,如果是這樣,可以選擇把表情放到最后绘面。

效果展示:

image

如果你們團(tuán)隊(duì)是一個(gè)喜歡用 emoji 的團(tuán)隊(duì)欺税,其實(shí)可以不用遵循上面的一節(jié)的規(guī)范,因?yàn)?emoji 已經(jīng)可以表達(dá)出 header 的 type 的作用了揭璃,直接在 emoji 后面加描述即可晚凿。

emoji 表情庫(kù)

emoji | emoji 代碼 | commit 說(shuō)明

:-------- | :-------- | :--------

:tada: (慶祝) | :tada: | 初次提交

:new: (全新) | :new: | 引入新功能

:bookmark: (書(shū)簽) | :bookmark: | 發(fā)行/版本標(biāo)簽

:bug: (bug) | :bug: | 修復(fù) bug

:ambulance: (急救車(chē)) | :ambulance: | 重要補(bǔ)丁

:globe_with_meridians: (地球) | :globe_with_meridians: | 國(guó)際化與本地化

:lipstick: (口紅) | :lipstick: | 更新 UI 和樣式文件

:clapper: (場(chǎng)記板) | :clapper: | 更新演示/示例

:rotating_light: (警車(chē)燈) | :rotating_light: | 移除 linter 警告

:wrench: (扳手) | :wrench: | 修改配置文件

:heavy_plus_sign: (加號(hào)) | :heavy_plus_sign: | 增加一個(gè)依賴

:heavy_minus_sign: (減號(hào)) | :heavy_minus_sign: | 減少一個(gè)依賴

:arrow_up: (上升箭頭) | :arrow_up: | 升級(jí)依賴

:arrow_down: (下降箭頭) | :arrow_down: | 降級(jí)依賴

:zap: (閃電)
:racehorse: (賽馬) | :zap:
:racehorse: | 提升性能

:chart_with_upwards_trend: (上升趨勢(shì)圖) | :chart_with_upwards_trend: | 添加分析或跟蹤代碼

:rocket: (火箭) | :rocket: | 部署功能

:white_check_mark: (白色復(fù)選框) | :white_check_mark: | 增加測(cè)試

:memo: (備忘錄)
:book: (書(shū)) | :memo:
:book: | 撰寫(xiě)文檔

:hammer: (錘子) | :hammer: | 重大重構(gòu)

:art: (調(diào)色板) | :art: | 改進(jìn)代碼結(jié)構(gòu)/代碼格式

:fire: (火焰) | :fire: | 移除代碼或文件

:pencil2: (鉛筆) | :pencil2: | 修復(fù) typo

:construction: (施工) | :construction: | 工作進(jìn)行中

:wastebasket: (垃圾桶) | :wastebasket: | 廢棄或刪除

:wheelchair: (輪椅) | :wheelchair: | 可訪問(wèn)性

:construction_worker: (工人) | :construction_worker: | 添加 CI 構(gòu)建系統(tǒng)

:green_heart: (綠心) | :green_heart: | 修復(fù) CI 構(gòu)建問(wèn)題

:lock: (鎖) | :lock: | 修復(fù)安全問(wèn)題

:whale: (鯨魚(yú)) | :whale: | Docker 相關(guān)工作

:apple: (蘋(píng)果) | :apple: | 修復(fù) macOS 下的問(wèn)題

:penguin: (企鵝) | :penguin: | 修復(fù) Linux 下的問(wèn)題

:checkered_flag: (旗幟) | :checkered_flag: | 修復(fù) Windows 下的問(wèn)題

:twisted_rightwards_arrows: (交叉箭頭) | :twisted_rightwards_arrows:| 分支合并

如何在命令行中顯示 emoji

默認(rèn)情況下,在命令行中并不會(huì)顯示出 emoji, 僅顯示 emoji 代碼瘦馍。不過(guò)可以使用 emojify 使得在命令行也可顯示 emoji, 它是一個(gè) shell 腳本歼秽,安裝與使用都很簡(jiǎn)單,在這里 查看更詳細(xì)的如何安裝與使用扣墩。

安裝 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?"

顯示效果:

image

在使用 git bash 的時(shí)候哲银,設(shè)置替換日志中的表情符號(hào)代碼


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

或者設(shè)置git log命令別名


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

$ gitlog

效果如下:

image

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

參考資料

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末荆责,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子亚脆,更是在濱河造成了極大的恐慌做院,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件濒持,死亡現(xiàn)場(chǎng)離奇詭異键耕,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)柑营,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)屈雄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人官套,你說(shuō)我怎么就攤上這事酒奶∫峡祝” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵惋嚎,是天一觀的道長(zhǎng)杠氢。 經(jīng)常有香客問(wèn)我,道長(zhǎng)另伍,這世上最難降的妖魔是什么鼻百? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮摆尝,結(jié)果婚禮上温艇,老公的妹妹穿的比我還像新娘。我一直安慰自己结榄,他們只是感情好中贝,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著臼朗,像睡著了一般邻寿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上视哑,一...
    開(kāi)封第一講書(shū)人閱讀 51,679評(píng)論 1 305
  • 那天绣否,我揣著相機(jī)與錄音,去河邊找鬼挡毅。 笑死蒜撮,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的跪呈。 我是一名探鬼主播段磨,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼耗绿!你這毒婦竟也來(lái)了苹支?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤误阻,失蹤者是張志新(化名)和其女友劉穎债蜜,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體究反,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡寻定,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了精耐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狼速。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖卦停,靈堂內(nèi)的尸體忽然破棺而出唐含,到底是詐尸還是另有隱情浅浮,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布捷枯,位于F島的核電站,受9級(jí)特大地震影響专执,放射性物質(zhì)發(fā)生泄漏淮捆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一本股、第九天 我趴在偏房一處隱蔽的房頂上張望攀痊。 院中可真熱鬧,春花似錦拄显、人聲如沸苟径。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)棘街。三九已至,卻和暖如春承边,著一層夾襖步出監(jiān)牢的瞬間遭殉,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工博助, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留险污,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓富岳,卻偏偏與公主長(zhǎng)得像蛔糯,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子窖式,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容