專案可以怎麼規範Git commit ?

初見雨夜發表於2022-03-26

通常情況下,commit message應該清晰明瞭,說明本次提交的目的,具體做了什麼操作。但是在日常開發中,大家的commit message都比較隨意,中英文混合使用的情況有時候很常見,這就導致後續程式碼維護成本比較大。
基於這些問題,可以通過husky和commitlint來規範commit的格式,來減小程式碼維護成本。
Angular規範是目前使用最廣的寫法,比較合理和系統化,並且有配套的工具(VSCode外掛git-commit-plugin就非常好用)

commit message介紹

commit message格式

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

type(必須)
用於說明 commit 的類別,只允許使用下面7個標識。

  • feat:新功能(feature)
  • fix:修補bug
  • docs:文件(documentation)
  • style: 格式(不影響程式碼執行的變動)
  • refactor:重構(即不是新增功能,也不是修改bug的程式碼變動)
  • test:增加測試
  • chore:構建過程或輔助工具的變動

scope(可選)
scope用於說明 commit 影響的範圍,比如資料層、控制層、檢視層等等,視專案不同而不同。

subject
subject是 commit 目的的簡短描述,不超過50個字元。

注意事項:

  • 以動詞開頭,使用第一人稱現在時,比如change,而不是changedchanges
  • 第一個字母小寫
  • 結尾不加句號(.)

安裝到專案

husky

  1. 安裝 husky npm install husky --save-dev

  2. 初始化 husky npx husky install

  3. 設定專案 install 自動初始化 husky ,在 package.json 新增指令碼

    // package.json
    {
      "scripts": {
        "prepare": "husky install"
      }
    }
    

hook

新增 hook 勾子命令,專案中使用 commit-msg 勾子來校驗 commit message 是否符合規範: npx husky add .husky/commit-msg "npx --no-install commitlint --edit $1"

執行上面命令後,將自動在 .husky  資料夾下面新增對應的勾子檔案,如下

如果執行完新增勾子函式如果出現如下訊息

可以先執行 npx husky add .husky/commit-msg,然後手動去commit-msg檔案裡新增npx --no-install commitlint --edit $1

commitlint

  1. 安裝 @commitlint/config-conventional @commitlint/cli

    npm install --save-dev @commitlint/config-conventional @commitlint/cli

  2. 新增配置檔案 .commitlintrc.js

    module.exports = {
      extends: [
        '@commitlint/config-conventional'
      ]
    };
    

相關文章