Gitのコミットメッセージをチーム全体で統一するコツ|現場で使える実践テクニック
こんにちは!
今日は「Gitのコミットメッセージをチーム全体で統一するコツ」について解説します。
コミットメッセージがグチャグチャになる理由
僕も昔、チームのGitリポジトリを見たときにびっくりしました。
コミットメッセージが本当にバラバラやん。
「fix」「修正」「あ」「wip」「temp」みたいなメッセージがいっぱいあって、正直ヒストリーを見ても何が起きたのかさっぱりわかりませんでした。
理由はシンプルです。
「チーム全体でコミットメッセージのルールが決まっていない」からなんです。
人によって書き方が違うし、英語で書く人もいれば日本語で書く人もいます。
本当に現場あるあるなんですよ。
でもね、このルール統一ってめっちゃ重要です。
何ヶ月も前のコミットログを見て「あ、このバグはいつから入ったんだ」って追跡するときに、きちんとしたメッセージがあると本当に助かります。
逆にグチャグチャだと、その追跡作業だけで数時間かかるなんてこともあります。
チーム統一ルールの作り方
では、実際にどうやってチーム全体でルールを統一するのか。
大事なポイントは3つです。
- メッセージの形式を統一する(日本語か英語か、1行か複数行か)
- プレフィックスを決める(「fix:」「feat:」などの接頭辞)
- 書き方の具体例を決めておく
ほんまに大事なのは「具体例」です。
ルールをドキュメント化しても、実際の例がないと「あ、これはどう書くんやろ」って迷うんです。
例えば、こんな感じで決めるといいですよ:
fix: ヘッダーのnavbar高さ調整
ヘッダーがモバイル表示で崩れていたため、navbar の max-height を 56px に調整した。
Closes #123
この例で言うと:
1行目は「プレフィックス: 簡潔な説明」
3行目以降は「詳細な背景や実装内容」
最後に「関連するIssue番号」を記載する形です。
Conventional Commitsで形式を統一する
実は業界標準的な書き方があります。
それが「Conventional Commits」という規約です。
基本的な形は:
<type>(<scope>): <subject>
<blank line>
<body>
<blank line>
<footer>
それぞれの説明です:
type:変更の種類(feat, fix, docs, style, refactor, test, chore など)scope:変更の範囲(header, footer, auth など。オプション)subject:50文字以下の簡潔な説明body:詳細な説明(なぜ変えたのか、どう変えたのか)footer:Issue番号やBreaking Changesの記載
実際の例を見てみましょう。
feat(auth): ログイン画面にパスワードリセット機能を追加
ユーザーがパスワードを忘れた場合、メール認証でリセット可能にした。
フロントエンドは既存のフォームコンポーネントを再利用。
バックエンドの reset_token 実装は別PR参照。
Closes #456
めっちゃきれいなログになります。
こういう形で統一すると、後で git log --oneline で見たときにも、どの機能がいつ入ったか一目瞭然です。
自動化でルール違反を防ぐ
でもね。
ルールを決めるだけだと、やっぱり守らない人が出ます。
僕のチームでも最初はそうでした。
そこで活躍するのが「Husky」と「commitlint」という自動チェックツールです。
これらを使うと、コミット時に自動的にメッセージの形式をチェックできます。
設定は簡単です。
まず、必要なツールをインストール:
npm install –save-dev husky @commitlint/cli @commitlint/config-conventional
次に commitlint.config.js をプロジェクトルートに作成:
module.exports = {
extends: [‘@commitlint/config-conventional’],
rules: {
‘type-enum’: [
2,
‘always’,
[‘feat’, ‘fix’, ‘docs’, ‘style’, ‘refactor’, ‘test’, ‘chore’]
],
‘subject-full-stop’: [2, ‘never’],
‘subject-case’: [2, ‘never’, ‘start-case’]
}
};
最後に Husky の git hook を設定:
npx husky install
npx husky add .husky/commit-msg ‘npx –no — commitlint –edit “$1″‘
これで完成です。
ユーザーが git commit を実行すると、自動的にメッセージをチェックしてくれます。
ルール違反だと、コミットが失敗して「あ、メッセージの形式が違いますよ」と教えてくれるんです。
本当に便利です。
チーム全体で自動的にルール遵守になります。
まとめ
Gitのコミットメッセージ統一は、一見地味な作業に見えるかもしれません。
でも、プロジェクトが大きくなればなるほど、その価値が本当にわかります。
大事なのは:
- チーム全体でルールを決める(Conventional Commits を参考に)