Git等のコミットメッセージの書き方のルールに、
「Conventional Commits」という仕様があります。

Conventional Commits
https://www.conventionalcommits.org/ja/v1.0.0/

本エントリでは、
このルールに従っているかをチェックする仕組みを、
GitHubActionsとpre-commitで設定する手順を示します。

GitHubActionsでの設定

次のActionを使うと、
GitHubActionsでConventional Commitに従っているかをチェックできます。

Conventional Commits GitHub Action | GitHub
https://github.com/webiny/action-conventional-commits

次のような、GiHubActionsのワークフローで設定出来ます。

.github/workflows/ci.yaml

name: workflow
on: 
  - pull_request
jobs:
  unit_test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: webiny/action-conventional-commits@v1.3.0
        with:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

既定で利用できる型は、次の通りです。
feat,fix,docs,style,refactor,test,build,perf,ci,chore,revert,merge,wip

利用する型を指定したい場合は、
次のようにallowed-commit-typesを指定します。

name: workflow
on: 
  - pull_request
jobs:
  unit_test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: webiny/action-conventional-commits@v1.3.0
        with:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          allowed-commit-types: "feat,fix"

Conventional Commits GitHub ActionのREADME.mdに、
チェック結果の画面イメージが載っていますが、
コミット毎メッセージ一覧に対して、
OK/NGがアイコン表示されていて見やすいと思いました。
https://github.com/webiny/action-conventional-commits/blob/master/README.md

pre-commitでの設定

手元のPCで作業している段階でチェックした方が手戻りも少ないので、
次はpre-commitでもチェックすること考えます。

次のHookを使うと、
pre-commitでもConventional Commitに従っているかをチェックできます。

conventional-pre-commit | GitHub
https://github.com/compilerla/conventional-pre-commit

次のようなpre-commitの設定で適用できます。

.pre-commit-config.yaml

repos:
- repo: https://github.com/compilerla/conventional-pre-commit
  rev: v3.4.0
  hooks:
  - id: conventional-pre-commit
    stages: [commit-msg]
default_install_hook_types:
- pre-commit
- commit-msg
minimum_pre_commit_version: '2.18.0'

既定で利用できる型は、次の通りです。
feat,fix,docs,style,refactor,test,build,perf,ci,chore,revert

利用する型を指定したい場合は、次のようにargsに指定します。

repos:
- repo: https://github.com/compilerla/conventional-pre-commit
  rev: v3.4.0
  hooks:
  - id: conventional-pre-commit
    stages: [commit-msg]
    args: [feat, fix]
default_install_hook_types:
- pre-commit
- commit-msg
minimum_pre_commit_version: '2.18.0'

これ以外に、次のような点を設定することもできます。

  • スコープを必須にしたり(–force-scope)
  • スコープを限定したり(–scopes)
  • Gitの自動コメント(AutoSquash, Maerge等)に対しても規約を適用するか(–strict)

以上。