Git 用 unified diff パッチ生成ツール
2つのテキストを比較し、Myers の差分アルゴリズムを使って、正しい @@ ハンクヘッダー付きの Git 形式 unified diff(.patch)を生成します。コンテキスト行数と a/b のファイルパスを設定できます。
入力
各変更の前後に表示する変更のない行数(標準の diff -u は 3)。
出力
両方のテキストを入力すると差分が表示されます。
このツールを使う他の方法
REST API
curl -X POST https://api.iotools.cloud/v1/tool/git-unified-diff-patch-generator \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"originalText": "line one\nline two\nline three",
"modifiedText": "line one\nline 2\nline three",
"fromFile": "a.txt",
"toFile": "b.txt",
"contextLines": "3"
}'ご自身のアカウントのキーに差し替えてください。ツールのフィールドがそのままリクエストボディになります——ラッパーはありません。
AIエージェントに依頼する
Use the IOTools `git-unified-diff-patch-generator` tool (Git Unified Diff Patch Generator) on this input:
YOUR_INPUT_HEREIOTools MCPサーバーに接続された任意のエージェントにこれを貼り付け、入力内容を追加してください。
埋め込みウィジェット
<iframe
src="https://iotools.cloud/embed/git-unified-diff-patch-generator/"
width="100%" height="520" frameborder="0" scrolling="no" loading="lazy"
title="Git 用 unified diff パッチ生成ツール — iotools.cloud"
sandbox="allow-scripts allow-forms allow-same-origin allow-downloads allow-popups allow-popups-to-escape-sandbox"
allow="clipboard-write"
style="width:100%;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden"></iframe>
<script src="https://iotools.cloud/embed.js" async></script>ご自身のページに貼り付けるだけ——無料、キー不要、リンクを掲載するだけです。
| API/MCP 1回あたりの費用 | 5クレジットから |
|---|---|
| クレジットが足りませんか? | 料金を見る |
次の方法でも利用可能
ガイド
ファイルの2つのバージョンを貼り付けるだけで、すぐに適用できる unified diff パッチ を取得できます。出力形式は git diff や diff -u と同じ、--- a、+++ b、@@ -l,s +l,s @@ です。すべての処理はブラウザ内で行われるため、貼り付けた内容が端末の外に送信されることはありません。
unified diff とは?
unified diff は、2つのファイル間の変更を表す標準的なテキスト形式です。各パッチは、元のファイル(---)と変更後のファイル(+++)を示す2行のヘッダーで始まり、その後に1つ以上の ハンク が続きます。ハンクは @@ -12,7 +12,8 @@ のようなヘッダーで始まり、両側の開始行と行数を記録します。続いて、コンテキスト行(先頭がスペース)、削除行(-)、追加行(+)が並びます。この形式は Git がコミットに保存する形式であり、コードレビューツールが表示する形式であり、patch や git apply が読み込む形式でもあります。
使い方
- 元のテキストを 元のテキスト ボックスに、変更後のテキストを 変更後のテキスト ボックスに貼り付けます。
- 必要に応じて 元のパス と 変更後のパス を設定します。これらは
--- a.txt/+++ b.txtのヘッダー行になります。結果をgit applyで適用する予定がある場合は、(例:a/src/index.jsのような)実際のリポジトリパスを使用してください。 - 各変更の周囲に表示する変更のない行を増減したい場合は、コンテキスト行数 を調整します。デフォルトの 3 は
diff -uと同じです。最も小さいパッチにしたい場合は 0 に設定します。 - 生成されたパッチをコピーするか、
.patchファイルとしてダウンロードします。
差分の計算方法
このツールは Myers の O(ND) 差分アルゴリズム を使用します。これは Git の基盤となっているのと同じ、最短編集スクリプトの手法です。Myers は、元のテキストを変更後のテキストに変換するための挿入と削除の最小セットを見つけ、その編集を選択したコンテキスト量のハンクにまとめます。コンテキストウィンドウの2倍以内にある隣接した変更は、diff -u とまったく同じように1つのハンクに統合されるため、出力は標準的なツールとバイト単位で互換性があります。
パッチの適用
出力を changes.patch として保存し、git apply changes.patch または patch -p0 < changes.patch で適用します。パスの接頭辞に a/… と b/… を使用した場合は、git apply -p1 がそれらを作業ツリーに対応付けます。
コードに対しても正確ですか?
はい。行単位の差分は決定的で、同じ入力に対して GNU の diff -u と一致します(ハンクヘッダーや行数も含みます)。行全体を比較するため、1文字の変更でも、1行の削除と1行の追加として表示されます。これは行ベースのパッチとして通常の動作です。
プライバシー
すべての処理はクライアント側、つまりお使いのブラウザ内で行われます。入力したテキストがアップロードされたり、ログに記録されたり、サーバーに送信されたりすることはありません。そのため、社内のソースコードや機密ファイルでも安心して使えます。
よくある質問
コンテキスト行数はいくつにすればよいですか? 3 が一般的な標準値で、レビュアーも通常これを想定しています。パッチを読みやすくするためにもっと周囲のコードが必要な場合は増やし、最も小さい差分にしたい場合は 0 に減らしてください。
新規作成または削除したファイルのパッチを生成できますか? はい。片方を空のままにしてください。元のテキストを空にすると全行が追加されたパッチになり、変更後のテキストを空にすると全行が削除されたパッチになります。