破壊的変更のコミットメッセージ

破壊的変更のコミットメッセージの書き方を学びます。!表記、BREAKING CHANGEフッター、移行ガイダンス、破壊的変更がバージョニングに与える影響を解説します。

Breaking Changes

詳細な説明

Conventional Commitsでの破壊的変更

破壊的変更は、パブリックAPI、動作、またはインターフェースに互換性のない変更を導入します。Semantic Versioningでは、破壊的変更はそれが機能であれ修正であれ、majorバージョンバンプ(例:2.1.0から3.0.0)をトリガーします。

破壊的変更を示す2つの方法

1. ヘッダーのエクスクラメーションマーク

タイプ(およびスコープがある場合はその後)に!を追加:

feat!: remove support for Node.js 14
fix(api)!: rename /users endpoint to /accounts

2. BREAKING CHANGEフッター

詳細付きのBREAKING CHANGE:フッターを追加:

feat: redesign authentication API

BREAKING CHANGE: The login endpoint now returns a JWT token
instead of a session cookie. All clients must update their
authentication flow to use Bearer token headers.

3. 両方を併用(推奨)

両方を使うことで最大の可視性が得られます:

feat(auth)!: replace session-based auth with JWT

Migrate from express-session to jsonwebtoken for
stateless authentication. Sessions are no longer
stored on the server.

BREAKING CHANGE: The /auth/login endpoint now returns
{ token: string } instead of setting a session cookie.
Clients must include Authorization: Bearer <token>
header in all authenticated requests.

Migration guide: https://docs.example.com/auth-v3

破壊的変更に該当するもの

破壊的 非破壊的
パブリックAPIエンドポイントの削除 新しいエンドポイントの追加
関数の戻り値の型の変更 オプションパラメータの追加
エクスポートされた関数のリネーム 新しいエクスポートの追加
デフォルト動作の変更 設定オプションの追加
プラットフォームサポートの廃止 プラットフォームサポートの追加

移行ガイダンス

ボディやフッターに明確な移行手順を常に含めてください。ユーザーに以下を伝えます:

  1. 何が変わったかとその理由
  2. 現在の使い方で何が壊れるか
  3. 具体的な手順やコード例を含む移行方法
  4. 利用可能な場合は完全な移行ガイドへのリンク

ユースケース

認証メカニズムをセッションクッキーからJWTトークンに変更するライブラリのメジャーバージョンをリリースしています。APIのすべてのコンシューマーが統合を更新する必要があります。破壊的変更として明確に示し、移行手順を含み、自動リリースパイプラインで正しいmajorバージョンバンプをトリガーするコミットメッセージが必要です。

試してみる — Git Commit Message Generator

フルツールを開く