複数行のコミットボディ

効果的な複数行コミットメッセージボディの書き方を学びます。ボディを追加するタイミング、構造化の方法、72文字での行折り返し、ベストプラクティスを解説します。

Multi-line

詳細な説明

効果的なコミットメッセージボディの作成

コミットメッセージのボディは、変更の理由を説明する場所です。サブジェクト行が何が変わったかを記述する一方、ボディはコンテキスト、動機、将来の開発者(未来の自分を含む)が推論を理解するための詳細を提供します。

ボディを追加するタイミング

以下の場合にボディを追加します:

  • サブジェクト行だけでは変更が自明でない
  • 文書化すべき重要なコンテキストや動機がある
  • コミットが再発する可能性のある自明でないバグを修正する
  • このアプローチが代替案より選ばれた理由を説明したい
  • コミットが複数のファイルやシステムに影響する

フォーマットルール

  1. サブジェクトとボディを空行で区切る
  2. ボディ行を72文字で折り返す
  3. ボディは何をなぜを説明し、どのようにではない

fix(parser): handle escaped quotes in JSON strings

The previous regex-based parser failed when processing
JSON strings containing escaped double quotes (\").
This caused a parse error for any configuration file
with file paths or regex patterns containing quotes.

Replace the regex with a character-by-character state
machine that properly tracks escape sequences. This
approach is also ~30% faster for large inputs.

Closes #789

ボディの構造化

良いボディは以下のパターンに従います:

  1. 段落1:問題や動機は何だったか?
  2. 段落2:どのアプローチを取ったか、なぜか?
  3. 段落3(オプション):どの代替案が検討されたか?
  4. フッター:イシュー参照、共著者など

72文字ルール

Gitがボディ行を72文字で折り返すことを推奨する理由:

  • git logは出力を4スペースでインデントする
  • 72 + 4 = 76で、80列ターミナルに収まる
  • ツール間で一貫した可読性を確保する
  • 多くのGitホスティングプラットフォームがこの想定でコミットを表示する

ボディでの箇条書き

リストには箇条書きを使用できます:

refactor: reorganize project directory structure

- Move all API routes from /routes to /api
- Extract shared middleware into /middleware
- Consolidate database models in /models
- Update import paths across all files

ユースケース

診断に相当な調査を必要とした微妙なパースバグを修正しました。修正にはregexベースのアプローチをステートマシンに置き換えることが含まれます。将来のメンテナがなぜコードがこのように書かれているかを理解できるよう、根本原因と新しいアプローチの理由を文書化したいと考えています。

試してみる — Git Commit Message Generator

フルツールを開く