良好的Commit Message有利于代碼審查,能更快速查找變更記錄,并且可以直接生成Change log。
- 在接手新項目時候
-
你希望看到的git commit記錄是這樣的?
img - 還是這樣的?? WTF!?
img
Commit Message的寫法規范:AngularJS Git Commit Message Conventions的格式。
-
angular規范
為了規范代碼提交的說明,這里我們使用angular
的規范寫法:
<type>(<scope>): <subject> #header
// 空一行
<body>
// 空一行
<footer>
格式講解
Header
Header部分只有一行,包括三個字段:type(必需)、scope(可選)和subject(必需)。
總的來說,關鍵就是header這部分,至于<body>
和<footer>
可省略
例如:
feat:新增財務報表
type
用于說明本次commit的類別,只允許使用下面7個標識
- feat:新功能(feature)
- fix:修補bug
- docs:文檔(documentation)
- style: 格式(不影響代碼運行的變動)
- refactor:重構(即不是新增功能,也不是修改bug的代碼變動)
- test:增加測試
- chore:構建過程或輔助工具的變動
:::tip
注意:如果type為feat和fix,則該 commit 將肯定出現在 Change log 之中。其他情況(docs、chore、style、refactor、test)由你決定,要不要放入 Change log,建議是不要。
:::
scope
用于說明 commit 影響的范圍,比如數據層、控制層、視圖層等等,視項目不同而不同。
例如:
git commit -m "feat(module:user):添加用戶模塊"
此提交記錄中的module:user
說明提交的代碼影響的是user模塊
內容.
subject
是 commit 目的的簡短描述,不超過50個字符。
以動詞開頭,使用第一人稱現在時,比如change,而不是changed或changes
第一個字母小寫
結尾不加句號(.)
使用commitizen來執行規范
- 全局安裝commitizennode模塊
npm install -g commitizen
- 在項目目錄下運行命令
commitizen init cz-conventional-changelog --save --save-exact
- 運行完以上一律使用
git cz
代替git commit
來提交代碼,同時會顯示一下選項來自動生成符合格式的commit message
.
img
按照提示,你可以寫出規范的message了