テキストマージ
テキストマージでは、ファイルの 2 つのバージョンからの変更を 1 つの編集可能な結果にまとめます。2 つの変更に互換性がなく、どちらを採用するか判断が必要な場合に 競合 が発生します。
レイアウト

この画面には、同じファイルの 3 つのバージョンが表示されます。
- 左ペイン は自分のバージョン — ローカルの変更です。
- 中央ペイン は 結果 — ここだけが編集可能です。
- 右ペイン は取り込み側のバージョン — リモートの変更です。
ベース
もう 1 つ、4 つ目のバージョンとして ベース があります。これは、両側が出発点とした元のバージョンです。これは Git の 3-way マージモデルに対応します。
Local → Base ← Remote
↓
Result
ABDiff では、中央ペインを 結果 と ベース の間で切り替えて、何が変わったのかを把握できます。

競合
競合は、両側が同じ行を異なる内容に変更したときに発生します。たとえば、元の値が “blue” で、片方が “green”、もう片方が “red” に変更した場合です。どちらの変更が正しいかを Git は判断できないため、手動で解決する必要があります。
これは 2 人が同じ行を同時に編集したときに起こります。変更が重ならなければ Git が自動でマージします。重なる場合は、手動で競合を解決する必要があります。
Git 連携 を設定していれば、Git が競合を見つけた時点で ABDiff が起動します。結果領域は未解決のままなので、その内容を自分で決めます。選択肢は 3 つです。
- ローカル版で解決する
- 取り込み版で解決する
- または自分で結果を書く
競合を解決する
結果を採用するには、競合ブロックを右クリックし、自分側を採用 または 相手側を採用 を選択します。
独自の結果を作るには:
- 選択した行を編集する(↩︎ を押すかダブルクリック)
- または、どちらかの側から行をコピーする(右クリック ▸ 選択範囲を結果へコピー)
ヒント:
- 選択範囲を拡張(⇧↑ / ⇧↓)すると、複数行を一度にコピーできます
- どの変更も ⌘Z で元に戻せます
完了
終わったら、ファイルを保存します(ファイル ▸ 保存 または ⌘S)。これで Git に競合が解決済みであることが伝わります。
競合を解決しない場合は、保存せずにそのままファイルを閉じてください。
編集と移動
移動
| アクション | ショートカット |
|---|---|
| 前の行/次の行 | ↑ / ↓ |
| 前のペイン / 次のペイン | ← / → |
| 最初の行/最後の行へジャンプ | ⌘↑ / ⌘↓ |
| 前の変更 / 次の変更 | ⌥↑ / ⌥↓ |
| 前のハンク / 次のハンク | ⌥↑ / ⌥↓ |
| 別のペインに切り替える | ⇥ |
コピー
| アクション | ショートカット |
|---|---|
| 右にコピー | ⌘→ |
| 左にコピー | ⌘← |
| 選択範囲を拡張 | ⇧↑ / ⇧↓ |
| 自分側を採用 | ⇧⌘→ |
| 相手側を採用 | ⇧⌘← |
選択中の行 は灰色の長方形で表示されます。ハンク は連続した競合 / 変更ブロックです。コピー操作は、結果 ペインが実際に変更され、かつ選択が実在する行にある場合にだけ有効になります。行を Shift-クリックしても、同じペイン内で現在の選択範囲を拡張できます。
変更をコピーする:
- 現在選択している行をコピーするには、コピーコマンドを使います。
- 選択した行を含むブロック全体をコピーするには、ハンク全体のコピーを使います。
- 現在の選択範囲の中で右クリックすると選択は維持され、別の場所で右クリックするとまずその行が選択されます。
- 行のコンテキストメニューには、Shift+Arrow の移動が利用できる場合、選択範囲を上に拡張 / 選択範囲を下に拡張 も表示されます。
- 選択した行では、右クリックするか 編集 メニューから 自分側を採用 / 相手側を採用 を使います。
すべてのコピー操作は ⌘Z で元に戻せます。
編集
| アクション | ショートカット |
|---|---|
| 選択した結果行の編集を開始 | Return |
| 結果行を直接編集開始 | 行をダブルクリック |
| 確定して次の編集可能な行へ移動 | Return(編集中) |
| 確定して編集モードを終了 | Command-Return |
| 現在の行バッファを破棄して編集モードを終了 | Esc または Command-. |
行をダブルクリックして編集を始めることもできます。 すべての編集操作は ⌘Z で元に戻せます。
表示オプション
テキストマージは、比較の計算方法や表示方法を変更するオプションを提供します。これらのオプションはオプションメニューから利用できます。
- 無視パターン はノイズの多い差異を減らします。 無視パターン を参照してください。
- JSON 正規化 は、生の書式ではなく標準的な JSON 構造を比較します。
- 意味単位の行分割 のデフォルトは 設定 で構成され、このオプションメニューでは変更しません。
これらの設定はマッチングと可視化に影響し、ファイルを直接編集するものではありません。