diff / patch — Unified diff の生成・適用
2 つのテキストから Unified diff (.patch / .diff) を生成し、Unified diff を元テキストに適用 (apply) できる。Git や GNU patch と同形式 (--- / +++ / @@ ハンク)、コンテキスト行数とファイル名を指定可。すべてブラウザ内で処理。
使い方
モードを「差分を生成」「パッチを適用」から選びます。差分を生成では、変更前 / 変更後の 2 つのテキストを貼り付けると、Git や GNU patch と互換の Unified diff (--- / +++ / @@ ハンク) が出力されます。ファイル名とコンテキスト行数 (前後に残す共通行) を調整可能です。パッチを適用では、元のテキストと Unified diff を貼り付けると、適用後のテキストが復元されます。元テキストが diff のベースと一致しない場合はエラーになり、text-diff で比較する CTA が表示されます。サンプルボタンでモードごとの例を読み込めます。
よくある質問
- テキストはサーバーに送信されますか?
- いいえ。差分の生成 (jsdiff の createPatch) と適用 (applyPatch) はすべてブラウザ内で実行されます。入力テキストや patch が外部に送信されることはありません。
- 出力形式は Git や GNU patch と互換?
- はい。Unified diff 形式 (--- a/file / +++ b/file / @@ -L,C +L,C @@) で出力するので、`git apply patch.diff` や `patch -p1 < patch.diff` がそのまま使えます。先頭の `Index:` 行や区切り `=` は jsdiff の規定どおり付与されますが、Git / GNU patch はこれらを無視するので互換性に問題ありません。
- コンテキスト行数とは何ですか?
- 差分の上下に表示される共通行 (変更されていない行) の数です。デフォルトは 3 行で、Git diff と同じ既定値です。0 にすると最小サイズの patch、増やすと patch が読みやすくなり、ファジー適用の成功率も上がります。
- 適用 (apply) でエラーになる場合は?
- 元のテキストが diff のベースと一致しない場合、jsdiff は false を返します (例外を投げない)。本ツールはこれを検出してエラー表示し、text-diff へ誘導する CTA を出します。ファジー一致 (前後行のずれ吸収) は jsdiff の規定で許容されるので、軽微なズレなら適用は通ります。
- 複数ファイルの patch (multi-hunk) は?
- 1 つの diff に複数のハンク (@@) を含めることはできますが、本ツールでは 1 ファイル分の Unified diff だけを扱います (file-by-file の `Index:` 区切りには非対応)。複数ファイルをまとめて適用したい場合は、本ツールで 1 ファイルずつ適用するか、CLI の `git apply` / `patch` を使ってください。
- バイナリは比較できる?
- いいえ。Unified diff はテキスト前提なので、非テキストファイルは予期しない動作になります。
- text-diff との違いは?
- text-diff は「比較を画面に表示する」(行内ワード差分、Inline / Side-by-Side) のがゴール。diff-patch は「patch テキストを生成 / 適用する」が目的で、Git や GNU patch との連携を前提にしています。レビューで差分を確認したいだけなら text-diff、CI / メール / コードレビューで patch を共有・適用したいなら diff-patch を使ってください。
類似のツール
テキスト差分 — 行 / 単語単位の比較
2 つのテキストを行単位で比較して差分を表示。Inline / Side-by-Side 表示、行内ワード差分、前後の空白の無視に対応。すべてブラウザ内で処理。
JSON 比較 / 差分 — 構造的に違いを抽出
2 つの JSON を構造的に比較。オブジェクト/配列のネストを再帰的に解析し、追加・削除・変更・移動の各差分をハイライト表示します。すべてブラウザ内で処理。
行重複削除 — 全部一意化 / 重複だけ抽出
テキストを行 (\n) で分割し、重複する行を除去します。初出の行だけを保持し、元の順序を維持。連続した重複だけでなく離れた位置の重複も対象 (Unix `awk '!seen[$0]++'` 相当)。すべてブラウザ内で処理。
文字数カウント — 文字 / バイト / 行 / 単語
テキストの文字数・単語数・行数・段落数・UTF-8 バイト数をリアルタイムで集計。空白・改行を含めるか除くかを切り替え可能で、Twitter・原稿用紙 (400 字)・LINE などの文字数上限の進捗バーも同時表示。すべてブラウザ内で動くので、原稿や下書きを安全にカウントできます。