目次

1. 初めに

以前の記事でGitを使う際のコミットメッセージの規約をまとめました。 あれから大分変更しましたので、現在使用している規約を紹介します。

2. コミットメッセージの規約

現在はConventional Commits(下記参照)と呼ばれるコミットメッセージの規約を少し改良して使用しています。

また、Conventional CommitsはフロントエンドWebアプリケーションフレームワークである Angularの規約(下記参照)をベースにした規約です。

2.1. コミットメッセージのフォーマット

コミットメッセージのフォーマットは以下の通りです。 また、<>で囲まれている項目は必須で、[]で囲まれている項目は任意です。

<コミット種別>: [Issue番号] <タイトル>

[本文]

[フッタ]

2.2. コミット種別

そのコミットで行ったことに対応するコミット種別を記入します。 コミット種別は以下を想定しています。

コミット種別 バージョンアップ種別 意味
feat マイナーバージョンアップ ユーザに対する機能を追加・更新する
fix パッチバージョンアップ ユーザに対するバグを修正する
perf パッチバージョンアップ パフォーマンスを改善する
refactor パッチバージョンアップ コードを改善する (外部の振る舞いを変更せずに)
style パッチバージョンアップ フォーマットスタイルを適用する (コードの意味に影響を与えずに)
build パッチバージョンアップ ビルドシステムや外部依存関係を追加・更新する
test パッチバージョンアップ テストを追加・更新する
docs パッチバージョンアップ ドキュメントを追加・更新する
ci パッチバージョンアップ CI構成ファイルとスクリプトを追加・更新する
chore パッチバージョンアップ 上記以外の雑用を行う

マイナーバージョンアップやパッチバージョンアップは上記の通りですが、 メジャーバージョンアップはコミット種別の横に!を付与するか、フッタにBREAKING CHANGE:を付与します。 また、この時コミット種別は問いません。

2.3. タイトル

そのコミットで行ったことを簡潔に記入します。

また、1つのコミットで2つ以上にならないようにします。

2.4. 本文

そのコミットで行ったことを詳細に記入します。

また、バグ修正の場合はそのバグが発生した理由や対応内容を記入します。

3. コミットメッセージの例

コミット種別ごとに例を示します。

feat: OSパッケージをインストールする処理を追加
feat!: サブコマンドの引数を任意から必須に変更
feat: サブコマンドの引数を任意から必須に変更

BREAKING CHANGE: サブコマンド(`subcmd`)の引数(`arg1`,`arg2`)は任意から必須に変更されました
fix: タグに空白がある場合にタグページへのリンクが404になる件を修正

タグに空白がある場合、タグページへのリンクは空白のままだが、
生成されたタグページのファイル名は`-`に置換される。
そのため、タグページへのリンクにおける空白を`-`に置換した。
perf: 記事検索における検索速度を改善
refactor: プロパティを公式ドキュメントの順番通りに整理
style: フォーマッタを適用
build: 静的コード解析ツールの依存性や設定を変更
test: 単体テスト関数を追加
docs: 記事を更新
ci: ワークフロー(gh-pagesブランチ)を作成
chore: Makefileに静的コード解析ツールの依存性や設定を反映

4. コミットメッセージのテンプレートファイル

コミットメッセージの規約をコミット時に表示するため、下記テンプレートファイルを作成してGitに設定しています。

.git_commit_message_template



# ##### commit message format #####
# <commit type>: [issue number] <commit title>
#
# [body]
#
# [footer]
#
# ##### commit type #####
# feat:     [MINOR] add or update a feature for the user
# fix:      [PATCH] fix a bug for the user
# perf:     [PATCH] improve performance
# refactor: [PATCH] improve code (without changing external behavior)
# style:    [PATCH] apply a format style (without affecting the meaning of the code)
# build:    [PATCH] add or update the build system and external dependencies
# test:     [PATCH] add or update tests
# docs:     [PATCH] add or update documents
# ci:       [PATCH] add or update CI configuration files and scripts
# chore:    [PATCH] do chores excluding those mentioned above
#
# ##### references #####
# https://www.conventionalcommits.org/ja/v1.0.0/
# https://github.com/angular/angular/blob/22b96b9/CONTRIBUTING.md#-commit-message-guidelines

セットアップする際には下記コマンドを実行します。

$ cd <テンプレートファイルを配置したディレクトリ>
$ git config --global commit.template `pwd`/.git_commit_message_template

5. 最後に

今回は現在使用しているコミットメッセージの規約を紹介しました。 Conventional Commitsと呼ばれる有名な規約を使用しているので大分読みやすくなったと思います。 また、前回の記事でも紹介した通り、 変更履歴自動生成ツールの入力に使用できるので良いこと尽くしです。

6. 参考サイト