Commit規範
遵循commit規範是一件很重要的事,不僅更規範,而且也方便其他人檢視git記錄,所以這篇部落格就用來淺記一下commit需要遵循的基本規範。
commit格式
在 Angular 規範中,Commit Message 包含三個部分,分別是 Header、Body 和 Footer,格式如下:
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
其中,Header是必需的,Body和Footer可以省略。在以上規範中,scope
必須用括號 () 括起來, <type>(<scope>])
後必須緊跟冒號 ,冒號後必須緊跟空格,2 個空行也是必需的。
Header
Header 部分只有一行,包括三個欄位:type(必選)、scope(可選)和 subject(必選)。
type
常見的type如下所示:
feat: 新特性
fix: 修改問題
refactor: 程式碼重構
docs: 文件修改
style: 程式碼格式修改, 注意不是 css 修改
test: 測試用例修改
chore: 其他修改, 比如構建流程, 依賴管理.
pref: 效能提升的修改
build: 對專案構建或者依賴的改動
ci: CI 的修改
revert: revert 前一個 commit
如何確定一個commit所屬的分類呢,具體可以參照下面這張圖:
scope
用來說明 commit 的影響範圍。顯然,不同專案會有不同的 scope。在專案初期,可以設定一些粒度比較大的 scope,比如可以按元件名或者功能來設定 scope;後續,如果專案有變動或者有新功能,可以再用追加的方式新增新的 scope。
scope 不適合設定太具體的值。太具體的話,一方面會導致專案有太多的 scope,難以維護。另一方面,開發者也難以確定 commit 屬於哪個具體的 scope,導致錯放 scope,反而會使 scope 失去了分類的意義。
subject
subject 是 commit 的簡短描述,必須以動詞開頭、使用現在時。比如,可以用 change,卻不能用 changed 或 changes,而且這個動詞的第一個字母必須是小寫。透過這個動詞,可以明確地知道 commit 所執行的操作。此外還要注意,subject 的結尾不能加英文句號。
當然這裡是英文的subject,我們在公司裡面一般會使用中文,就沒有這麼多規矩了,不過最好也是動詞開頭,比如:修改了xxx。
Body
Body 部分可以分成多行,而且格式也比較自由。不過,和 Header 裡的一樣,它也要以動詞開頭,使用現在時。此外,它還必須要包括修改的動機,以及和跟上一版本相比的改動點。
Footer
Footer 部分不是必選的,可以根據需要來選擇,主要用來說明本次 commit 導致的後果。在實際應用中,Footer 通常用來說明不相容的改動和關閉的 Issue 列表,這個目前看來最不常用。
正確commit樣例
fix(release/fix): 修復了商品庫存顯示錯誤的bug
新增新的id檢索條件,使庫存關聯到地區,避免庫存獲取錯誤。
Reviewed-by: Lemon
Refs #133