Gitでコミットメッセージを記述する際のルール

本格的にGitを使い始めて5ヶ月が経った。Gitのコミットメッセージのルールについて覚えたことがあったので軽くメモ。

コミットメッセージを記述する際のルール

職場の環境や社内ルールによって異なるかもしれないがGitのコミットメッセージの書き方には大きく分けて以下の4つのルールがある。

  • 現在時制でコミットメッセージを書く
  • 1行目には変更内容の要約を書く
  • 2行目は空行にする
  • 3行目以降には本文を書く

以下より,これらのルールについて説明する。

現在時制でコミットメッセージを書く

コミットメッセージでは,現在時制を使わなければならない。例えば,”Fixed bug”ではなく,”Fix bug”にする。
理由はgit mergegit revertのようなコマンドが生成したコミットメッセージでは現在時制しか使われない為である。この記法に合わせることで全体としての調和を保つことが出来る。

1行目には変更内容の要約を書く

1行目には変更内容の要約を書き,長過ぎても70文字以内に収める。

こうするのには以下の2つの理由がある。

1つ目はgit logはコミットメッセージに対して折り返しをしてくれないという仕様によるものだ。横幅80文字のターミナルでは左側のインデントのために4文字引き,右側も釣り合うよう4文字引くなら,残されたのは72文字である。デフォルトのページャであるless -Sでは,72文字を超える場合,文章が画面外に飛び出してしまって読み辛くなる。

2つ目は1行目の要約が71文字以上だとGithubで見たときに省略されてしまう為である。なるべく50文字以内に収めることを目指すのが良いようだ。一緒に働いているパイオニアの言葉を借りて言えば「変更の要約が見辛いということは主張が簡潔でない,つまりはコードが簡潔でないということになりがちだから」である。

2行目は空行にする

git format-patch –stdoutというコマンドでは一連のコミットをe-mailに変換し,メール本文にコミットメッセージを使用する。
最初の行はE-Mailの件名になり,残りのテキストが本文になる。空行で本文と要約を分離するのは絶対に必要だ(本文を省略していない限り)。
もしも二つを繋げてしまうとgit rebaseのようなツールが混乱する可能性がある。

3行目以降には本文を書く

3行目以降には1行目に書いた要約について詳しく説明するような文章を書く。この場合も,72文字を超えないように折り返して記述する。

参考
見えないチカラ: 【翻訳】Gitのコミットメッセージに関する注意点
tbaggery – A Note About Git Commit Messages