Git: 教你如何在Commit時有話可說
不知道大家有沒有觀察過那些在Github上Star數位居前列的項目,它們無一例外的都擁有完善的文檔體系和高覆蓋的測試用例。要做到完善沒有規范肯定是不行的,代碼要有代碼的規范,協作要有協作的規范。我們今天要說的主題就是關于Git中記錄Commit Message的參考規范。先來看兩張圖,一張來自國際知名項目,一張是國內某知名項目(笑)。
國際知名項目AngularJS
國內知名項目MingGeJS
從上面兩張圖中,我想你已經能看出一些端倪來了吧,相較而言哪種更加能促進開發不言自明。當然,我舉這個國內知名項目比較極端,不過整體而言都普遍存在Commit Message比較隨意的現象。
Commit規范
順著思路,這一步應該給方案了,方案就是上圖AngularJS項目中用到的Git Commit Guidelines。
Commit Message 格式
<type>(<scope>): <subject>
<空行>
<body>
<空行>
<footer>
上面是一次Commit后Message格式規范,分成標題,內容詳情,結尾三個部分,各有各的用處,沒有多余項。
頭部即首行,是可以直接在頁面中預覽的部分,入上面圖中所示,一共有三個部分<type> ,<scope> ,<subject> ,含義分別如下
Type
-
feat:新功能(feature)
-
fix:修補bug
-
docs:文檔(documentation)
-
style: 格式(不影響代碼運行的變動)
-
refactor:重構(即不是新增功能,也不是修改bug的代碼變動)
-
test:增加測試
-
chore:構建過程或輔助工具的變動
Scope
用來說明本次Commit影響的范圍,即簡要說明修改會涉及的部分。這個本來是選填項,但從AngularJS實際項目中可以看出基本上也成了必填項了。
Subject
用來簡要描述本次改動,概述就好了,因為后面還會在Body里給出具體信息。并且最好遵循下面三條:
-
以動詞開頭,使用第一人稱現在時,比如change,而不是changed或changes
-
首字母不要大寫
-
結尾不用句號(.)
Body
<body>里的內容是對上面subject 里內容的展開,在此做更加詳盡的描述,內容里應該包含修改動機和修改前后的對比。
Footer
footer里的主要放置 不兼容變更 和 Issue關閉 的信息,參考下面兩個例子
來自: 微信