Skip to content

Latest commit

 

History

History
73 lines (51 loc) · 4.22 KB

commit-message.md

File metadata and controls

73 lines (51 loc) · 4.22 KB

付録: コミットメッセージの書き方

コミットメッセージは、未来の自分やチームのメンバーへの「手紙」です。 git log を見たときに、何を・なぜ変更したのか がすぐに分かるように書きましょう。

基本の形

空の内容のタスクを追加できないようにする          ← 1 行目: 要約(何をしたか)

todo.sh add "" を実行すると、内容が空のタスクが     ← 3 行目以降: 本文(なぜ・どのように)
追加されていた。空白以外の文字を含まない内容は
エラーにする。

Refs #1                                          ← 関連する Issue
  • 1 行目(要約): 変更内容を簡潔に書きます。日本語なら 30〜40 文字程度、英語なら 50 文字程度が目安です。末尾に句点(。)は付けません。
  • 2 行目: 空行にします。
  • 3 行目以降(本文): 必要に応じて、変更の理由や背景、注意点を書きます。小さな変更なら省略して構いません。

git commit -m "..." では 1 行目だけを書けます。本文も書きたいときは、-m を付けずに git commit を実行してエディタで書くか、-m を 2 回使います。

git commit -m "空の内容のタスクを追加できないようにする" -m "todo.sh add \"\" で空のタスクが追加されていたため。"

良い例・悪い例

悪い例 理由 良い例
修正 何を修正したのか分からない done コマンドで存在しない番号を指定したときのエラーを修正
update 同上 README に delete コマンドの使い方を追加
いろいろ変更 複数の目的の変更が混ざっている 目的ごとにコミットを分ける
バグ修正しました。テストも追加しました。あとタイポも直しました。 長すぎる・混ざっている 空の内容のタスクを追加できないようにする と README の誤字を修正 に分ける

接頭辞(プレフィックス)を付ける書き方

変更の種類を先頭に付けると、git log で変更の種類が一目で分かります。 Conventional Commits という書き方が広く使われています。

接頭辞 用途 例
feat: 新しい機能 feat: タスクを削除する delete コマンドを追加
fix: バグの修正 fix: 空の内容のタスクを追加できないようにする
docs: ドキュメントのみの変更 docs: README に使い方を追記
test: テストの追加・修正 test: done コマンドのテストを追加
refactor: 動作を変えないコードの整理 refactor: 番号のチェックを関数にまとめる
chore: 設定やツールなど、その他の変更 chore: CI の設定を更新

接頭辞を使うかどうかは、チームのルールに従います。この教材のリポジトリでは使っています(CONTRIBUTING.md 参照)。

Issue との関連付け

コミットメッセージや Pull Request の本文に #番号 を書くと、GitHub 上で Issue へのリンクになり、Issue の画面にもそのコミットが表示されます。

書き方 効果
Refs #1 Issue #1 に関連付ける(Issue は閉じない)
Closes #1 / Fixes #1 / Resolves #1 main(デフォルトブランチ)に取り込まれたときに Issue #1 を自動で閉じる

Issue を自動で閉じるキーワードは、コミットメッセージよりも Pull Request の本文 に書くのが一般的です。

コミットの単位

  • 1 つのコミットには 1 つの目的 だけを含める
  • 後から 1 つのコミットだけを取り消せる 単位が理想
  • 「機能の追加」と「無関係な文言の修正」は分ける
  • テストが通らない中途半端な状態は、なるべくコミットしない(作業ブランチ上で、途中経過を保存するためのコミットは問題ありません)

← 用語集 | 目次