コミットメッセージでの命令形の使用

Conventional Commitsが命令形を使う理由を理解します。命令形、過去形、現在分詞の違いを実践的な例で学びます。

Best Practices

詳細な説明

コミットメッセージにおける命令形

Conventional Commits仕様とGit自体のガイドラインは、コミットの説明を命令形で書くことを推奨しています。これは、あなたがしたことを説明するのではなく、命令や指示を与えるように書くことを意味します。

命令形とは?

命令形は、命令や指示を与えるために使用される動詞の形です:

ムード
命令形(正しい) "add feature", "fix bug", "update docs"
過去形(不正確) "added feature", "fixed bug", "updated docs"
現在分詞(不正確) "adding feature", "fixing bug", "updating docs"

なぜ命令形を使うのか?

  1. Git自体が使っている:Gitの自動生成メッセージは命令形を使用:

    • Merge branch 'feature'
    • Revert "add user validation"
    • Cherry-pick "fix login bug"
  2. 文を完成させる:「このコミットを適用すると、add user authenticationします」

  3. 簡潔である:命令形の動詞は過去形や現在分詞より短い

  4. 一貫性がある:チーム全員が同じ声で書く

よくある変換

間違い 正しい
added OAuth support add OAuth support
fixed memory leak fix memory leak
removing deprecated API remove deprecated API
updated dependencies update dependencies
changes error handling change error handling
improved performance improve performance

文テスト

すべてのコミット説明は以下を完成させるとき自然に読めるべきです:

「このコミットを適用すると、___します。」

  • 「このコミットを適用すると、add rate limiting to APIします」 ✔
  • 「このコミットを適用すると、added rate limiting to APIします」 ✘

commitlintでの強制

@commitlint/config-conventionalプリセットはデフォルトで命令形を強制しませんが、カスタムルールを追加するか、subject-caseルールを使って小文字を強制できます(これは自然に命令形を促します):

module.exports = {
  rules: {
    'subject-case': [2, 'always', 'lower-case'],
  },
};

ユースケース

チームのコミット履歴が過去形、現在分詞、命令形を混在させており、一貫性がなくパースが困難です。命令形に標準化し、チームと共有できる明確なビフォー/アフターの例を含むリファレンスが必要です。

試してみる — Git Commit Message Generator

フルツールを開く