1つのコミットに1つの理由。1行目で何をしたか、本文でなぜそうしたかを書き、機械的な変更は分ける。
コミットは「あとで読む人(未来の自分)」への記録です。1つのコミットに1つの理由を目安にし、整形・名前の変更のような機械的な変更は、中身の変更と分けます。
| 書き方 | 例 |
|---|---|
| 1行目は短く、何をしたか | 注文一覧のN+1を解消する |
| 本文に、なぜ・何を考えたか | 一覧で SQL が 120 回出ていたため preload に変更。… |
| 決まった接頭辞を使うチームも(Conventional Commits) | fix: …・feat: …・refactor: … |
| 課題の番号を付ける | Refs #123 |
「なぜ」はコードからは読み取れないので、メッセージや PR の説明に残します。git log -p・git blame で過去の理由をたどれると、調査がずっと速くなります。
面接ではこう答える
コミットは、あとで読む人への記録なので、1つのコミットに1つの理由を目安にしています。機能の追加とコードの整形が混ざると、レビューで読みにくく、戻すときに関係のない変更まで戻ってしまいます。メッセージは1行目で何をしたかを短く書き、本文でなぜそうしたかを書きます。なぜはコードから読み取れないので、ここに残すことで、障害の調査で git blame から理由をたどれます。
Webとの関わりレビューのしやすさ、障害時の切り戻し、過去の判断の調査のすべてに効きます。