パッチからHunkを選択的に適用する

複数Hunkパッチから特定のHunkをチェリーピックする方法を学びます。必要な変更のみを適用し、それ以外を拒否できます。

Multi-Hunk Patches

詳細な説明

Hunkのチェリーピック

パッチ内のすべての変更が必要とは限りません。Diffパッチ適用ツールでは、初回適用後に各Hunkのオン・オフを切り替えられます。git add -p(インタラクティブステージング)と同様の機能です。

ワークフロー

  1. オリジナルテキストと完全なパッチを貼り付け
  2. 適用をクリック — すべてのHunkが適用されチェックボックス付きで表示
  3. 各Hunkを確認
  4. 拒否したいHunkのチェックを外す
  5. 結果が自動更新されて承認されたHunkのみを反映

シナリオ例

4つのHunkを含むパッチを受け取りました:

Hunk 変更内容 判断
1 コメントのタイポ修正 承認
2 デバッグログの追加 拒否(本番向けでない)
3 NULLポインタバグの修正 承認
4 変数名の変更 拒否(命名規約が異なる)

選択的適用の仕組み

Hunkがオフにされると、エンジンは最初からパッチを再実行し、承認されたHunkのみを適用します。行オフセットは承認された変更のみに基づいて再計算され、結果の内部整合性が保たれます。

Gitとの比較

以下と同様の機能:

  • git add -p — Hunkを対話的にステージング
  • git checkout -p — Hunkを対話的に破棄
  • git stash -p — Hunkを対話的にスタッシュ

違いは、このツールがGitリポジトリに限らずあらゆるテキストで動作する点です。

ユースケース

設定ファイル用のコミュニティパッチをダウンロードしましたが、特定の設定のみ変更したい場合。不要なHunkをオフにして必要なものだけを適用します。

試してみる — Diff Patch Applier

フルツールを開く