コミットメッセージとは
「コミットメッセージ」は、「スナップショット」に含まれる情報です。ユーザーはコミットを実行する際、「コミットメッセージ」を指定します。
「コミットメッセージ」には、コミットの内容を記述します。
多くのケースでは、「コミットメッセージ」にファイルの変更内容を記述します。
後で過去の「スナップショット」を見返す時に、その「スナップショット」がどういう意味を持つのか、何故「スナップショット」を作成したのか、あるいはどのような変更を行ったのかを、「コミットメッセージ」から確認することができます。
コミットタイトルと本文
「コミットメッセージ」は、「コミットタイトル」と「本文」の2つのパーツで構成されます。「コミットタイトル」には、コミット内容の概要を記述します。
本文には、詳細なコミット内容を記述します。
「Git」では、「コミットタイトル」と「本文」を区別して扱います。
最初の行から空白行までを「コミットタイトル」として扱います。
空白行より後ろの行を、「本文」として扱います。
例えば、以下のような「コミットメッセージ」があるとします。
Add config files
Add new config files for templates.
These config files are useful for expert users.
Add new config files for templates.
These config files are useful for expert users.
1行目の文章が、「コミットタイトル」になります。
空白行を挟んで3行目以降の文章が、「本文」になります。
メールで例えると
メールで例えると、メールのタイトルが「コミットタイトル」で、メールの本文が「コミットメッセージ」の本文に相当します。コミットメッセージに必要な情報を書く
「コミットメッセージ」には、後で「コミットメッセージ」を参照するユーザーとって必要な情報を記述します。どういう時に「コミットメッセージ」を必要とするのか、「コミットメッセージ」はどのように使われるのかを考えて記述すると良いでしょう。
コミットタイトルの書き方
「コミットタイトル」では、コミット内容の概要を記述します。ここで紹介する「コミットタイトル」の書き方は、一例です。
この通りに記述しないとエラーになったり、「Git」の動作に不都合が出るわけではありませんが、初めて「コミットタイトル」を記述する人は参考にしてください。
50文字以内で概要を簡潔に記述する
「コミットタイトル」には、50文字以内で概要を簡潔に記述します。「コミットタイトル」は、各「スナップショット」の変更内容の概要を一覧で表現する時にも使用されます。
長すぎる「コミットタイトル」は可読性が落ちますし、短すぎる「コミットタイトル」はどのような変更をしたのか分かりづらく、役に立たない情報になってしまいます。
この50文字はアルファベットで50文字ですから、日本語だと25文字になります。
1行で記述する
「コミットタイトル」は1行で記述します。従って、2行目に空白行を設置し、3行目以降に本文を記述します。
句点を記述しない
文章の終わりに句点(。)をつけずに記述します。英文ならピリオド(.)をつけずに記述します。
タイトルですから、句点は必要ありません。
良くない例
ユーザーの設定ファイルを修正しました。
良い例
ユーザーの設定ファイルを修正
体言止めで記述する
体言止め(名詞で終わらせる記述方法)で記述します。良くない例
ユーザーの設定ファイルを修正しました
良い例
ユーザーの設定ファイルを修正
目的語を忘れずに
変更内容を記述する場合、何を変更したのか「コミットタイトル」に含めるようにします。どの程度の情報を含めるかは、後から「コミットタイトル」を見て十分な情報かどうかを1つの基準にするとよいでしょう。
良くない例
修正
ファイルを修正
良い例
ユーザーの設定ファイルを修正
英文では動詞 + 目的語 + 補語で記述する
英文では動詞(V) + 目的語(O) + 補語(C)を基本形として記述します。補語や形容詞は必要に応じて追加します。
また、動詞は原型で記述します。
良くない例
Adding config files
Updated template files
良い例
Add new config files
Update template files
どうしてもコミットタイトルが長くなってしまう場合
どうしても「コミットタイトル」が長くなってしまう場合、コミットを分割できないか検討するとよいでしょう。1回のコミットで複数の変更内容を含む場合、コミットタイトルが長くなってしまいます。
このようなケースでは、変更内容を分割し複数回に分けてコミットを行います。
例えば以下の変更内容があるとします。
- 設定ファイルの修正
- テンプレートファイルの追加
- 起動時に不正なファイルを読み込む不具合の修正
これらの変更内容を1回のコミットで反映しようとすると、どうしても「コミットタイトル」が長くなってしまいます。
これをそれぞれの変更内容ごとに3回に分けてコミットすれば、「コミットタイトル」を簡潔に表現できます。
本文の書き方
「コミットメッセージ」の本文の書き方です。「コミットタイトル」同様に本文の書き方も一例ですが、初めて本文を記述する人は参考にしてください。
72文字で改行する
本文は変更内容を記述するため、どうしても文章が長くなりがちです。この時、72文字で文章を改行して記述します。
横に長過ぎる文章は、読み手がスクロールしないと文章全体が見えず、可読性が落ちます。
この72文字はアルファベットで72文字ですから、日本語だと36文字になります。
英文の行頭記号には、ハイフンやアスタリスクを使う
英文の行頭記号には、ハイフン(-)かアスタリスク(*)を使います。行頭記号とは、箇条書きなどで使用される行頭に記述する記号のことです。
行頭記号の後ろにスペースを1つ空けて、文章を記述します。
また、文章の前後には空白行を配置します。
記述例
- Bullet points are okay, too
- Typically a hyphen or asterisk is used for the bullet, preceded by a
single space, with blank lines in between, but conventions vary here
- Use a hanging indent
- Typically a hyphen or asterisk is used for the bullet, preceded by a
single space, with blank lines in between, but conventions vary here
- Use a hanging indent
日本語の文章なら、「・」でしょうか。
箇条書きで良く使用される行頭記号を利用すると良いです。
プロジェクトによってはコミットメッセージの記述方法を案内している
プロジェクトによっては、「コミットメッセージ」の記述方法を案内しています。既存のプロジェクトに参加する場合は、「コミットメッセージ」のガイドラインが存在するか確認してみるとよいでしょう。
例えばガイドラインでは、本文にバグ管理システムの識別番号を記述しなければならないなど、一定のルールを設けています。
また、自分でプロジェクトを運用する時も、それらのガイドラインを参考にしてみるとよいでしょう。