gitのコミットメッセージはその名の通り「メッセージ」であって、「メモ」や「コメント」ではない。まかり間違ったって、あなたの日記帳でも、ツイッターでもない。冗談みたいな話だが、大真面目である。
概論
ウィクショナリー日本語版の「メッセージ」の項にはこうある。
- 伝言、言付、挨拶、口上。
コミットメッセージの場合、「挨拶」ではないことは確かだろう。コミットメッセージに「こんにちは!」とか書く人がいたら、(礼儀正しいのは結構なことだが)ちょっとびっくりだ。
他の3つについても見てみよう。
どの項目をみても、「伝える」という点は共通している。つまり、「メッセージ」という言葉の本質は「伝える」という点である。
コミットメッセージとは、読んだ人にコミットの内容を自然言語で伝えるためのものなのだ。
実例
「メモ」
feat: 文字数カウントがうまく動かないので、明日直す
wip
バージョン4.0.0新規実装機能
これは比較的よくあるパターンだ。コミットの内容を全く書いていない。これらはコミット内容の補足情報であり、「書いてもよい」ものではあるのだが、肝心の「書かなければならない」内容が抜けている。
3人目の人はちょっと特殊で、コミットがデカすぎるせいで内容を書けていない。こういうパターンでは、「どうやっても適切なコミットメッセージを書けない」という事実から、「もしかして、コミットがデカすぎるのではないか?」という気づきを得ることができる。
このような場合は、そもそもコミットの粒度から見直そう。
ところで、1人目の人は「コミットメッセージにプレフィクスをつける」というしぐさを実践したようだ。
それ自体は良い心がけなのだが、それだけやればよいというわけではない。バットの振り方を知らない奴がいきなり大谷翔平のバッティングフォームだけ真似してもホームランは打てないのだ。
このように書き直そう。
feat: ハンドルバリデーション用のUserHandleValidatorを作成
このコミットでは、文字数カウントが正常に動作していない。
カラーパレットにErrorColorの定義を追加
バリデーションエラーの表示に使用する。
このコミットでは、バリデーション処理は実装されていない。
補足情報がある場合、ひとつ空行を挟んでコミットメッセージの3行目以降に書く。もし書きたい補足情報がたくさんあるようなら、どれだけ長文になったっていい。
作業の都合上wipコミットをする必要がある場合、プッシュする前にリベースしてコミットを適切にやりなおすのも手だ。
ただし、多くの場合ではwipコミットをするまでもなく、スタッシュで事足りる。
「コメント」
レビュー指摘点の修正
バグissue #873 の対応
パッと見では変更の内容を書いているようにも見えるが、適切なコミットメッセージではない。これらは、「変更の内容」ではなく、「この変更をおこなうに至った動機」を説明している。
動機がどうあれ、コミットメッセージには「変更の内容」を必ず書く。なぜなら、コミットメッセージは特定のレビュアではなく、そのリポジトリを見ている不特定多数に向けたものであるからだ。
リポジトリのコミット履歴から特定の変更に関連するコミットを探している閲覧者にとっては、指摘点どうのこうのと言われてもなんの手がかりにもならない。
コミットメッセージはこのように書き直そう。
messageがmassageとなっているtypoを修正
投稿の上限文字数が140となっていたのを300に修正 #873
そして、さっき書いていた内容はプルリクエストにコメントする。空き缶はくずかごに、コメントはプルリクエストに。
(レビューコメントへの返信)指摘いただいた点を修正しました。
# 投稿の上限文字数が誤っていたバグを修正
投稿時の文字数の上限は300が正しいですが、140となっていた問題を修正しました。 close #873
……
「日記帳」「ツイッター」
3日かかったw
この前学校で習った書き方を使ってみた
たこ焼きうますぎ
\(^o^)/
うわあああああああああああああああああああああ
[任意の暴言]
本当に意味がわからないが、実在する。実際は英語で書かれていたり顔文字が(TдT)
だったりたこ焼きじゃなくお好み焼きだったりするのだが、こんなもので一体何を伝えようというのだろうか。メモやコメントですらないし、ましてやコミットでもメッセージでもない。神聖ローマ帝国もびっくりのとんでもコミットメッセージである。
まとめ
何度でも言うが、コミットメッセージの基本は「コミットの内容を、不特定多数の閲覧者に対して自然言語で伝える」ことである。これを満たさないものはコミットメッセージではないと言ったって過言ではない。
特に、「日記帳」「ツイッター」パターン。これらについては、コミットメッセージで悪ふざけを楽しむという驚くべきおこないであり、はっきり言って全く面白い。いや面白いのだが、非常に場違いであるし、目的を持って見に来た人にとっては全く笑えないし、迷惑にすらなりうる。やめよう。
当然、閲覧者が限られるプライベートリポジトリなどでは、あるいは非常に細かい誤字修正などでは、プロジェクト内などの慣習で誤字修正程度ならtypo
などでもよい文化圏はあるだろう。そのような場合についてはなんの問題もないのだが、不特定多数が閲覧するようなOSSなどにコントリビュートする際は必ず意識すべき原則だと考えている。