前書き
Gitのコミットメッセージの書き方についてどのようなものがあるのか気になったので調べてみた。会社によって、チームの方針によって、案件によって書き方は千差万別で正解は無いのであくまで参考程度に書き留める。
どのように書けばよいか
Angularの規約にコミットメッセージをどのように工夫して書けばよいかが載っているので引用する。
<プレフィックス>(<変更の範囲>) : <タイトル>
<空白>
本文を書く
<空白>
<フッター>
と書くのが良いコミットメッセージを書くときのテンプレートになっている。
プレフィックス
プレフィックスとは、コミットメッセージの先頭に書かれるもので、コミットログがどんな変更をしたかざっくり理解できるように書くもの。Angularの規約では以下のプレフィックスが紹介されている。
- feat : 新しい機能の追加・実装
- fix : バグの修正
- docs : ドキュメントの修正
- style : フォーマットやセミコロンの欠落など
- refactor : リファクタリング
- test : テストを追加
- chore : カテゴライズの必要がない雑事
- improvement : 新しい機能の追加やバグの修正ではなく、現在の実装を改善するコミット
- build : ビルド
本文
何を書けば良いのか
人に何かを伝えるときによく「5W1H」が使われるが、これはコミットメッセージにも当てはまる。
- いつ : タイムスタンプでわかる
- 誰が : author(著者)でわかる
- どこで : ディレクトリとファイル名でわかる
- 何を : コミットのタイトルと本文でわかる
- なぜ : コミットの本文でわかる
- どうやって : diffでわかる
つまり、「何を・なぜ、こうしたのか」 と書けばよい。
フッター
重大な互換性のない破壊的変更はフッターに記載する。 BREAKING CHANGE: を用いて主に
- 変更の説明
- 正当な理由
- 移行に関するメモ
などを記述する。また、コミットログの内容に関するURLなどを貼るのもここ。
例
add : コードの軽微な誤字を修正する
修正された誤字脱字の詳細については、issueをご覧ください。
closes issue #24
良いコミットメッセージを作成するためのツールも存在する。
https://www.conventionalcommits.org/en/v1.0.0/#tooling-for-conventional-commits
gitmoji
gitmojiは、プレフィックスをアイコン化しちゃって (emojiを使って) 「文字ばっかりでログを確認するとき読むの疲れるなあ」を解消してくれる優れもの。emojiは文字を使わないので、どんな人でもぱっと見でわかりやすいし視認性も良くなるので、作業効率が上がる。
以下の記事にプレフィックスのemojiについて詳しくまとまっているので、参考にしてください。
おわりに
コミットメッセージの書き方を整理することで人に伝わりやすい文章を考えるきっかけになった。gitmojiは、すごくわかりやすい工夫なので導入を検討してみたい。