> ## Documentation Index
> Fetch the complete documentation index at: https://docs.diversion.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# merge-tool

> マージ競合を解決する外部マージツールを一覧表示、追加、または削除します。

`merge-tool` コマンドは **外部マージツール** を管理します。`--conflict_resolution merge-tool` を指定してマージ、更新、またはリバートすると、Diversion がそれらを実行します。フローの仕組みとすぐに使える例については、[外部マージツールガイド](/ja/advanced/external-merge-tools) を参照してください。

ツールはリポジトリではなく、このコンピューターのあなたのユーザーに保存されます。複数のツールがファイルにマッチする場合、**リストの最初のツールが優先されます**。

## list

Diversion がマッチングする順序でツールを表示します。

```bash theme={null}
dv merge-tool
```

`dv merge-tool -l` も同じ動作です。ツールごとに、名前、パターン、終了コードを信頼するかどうか、コマンドを出力します。ツールがない場合は `No merge tools configured` と出力します。

## add

ツールを追加します。

```bash theme={null}
dv merge-tool add --name <name> --pattern <regex> --cmd <command> [--no-trust-exit-code]
```

`--name` はツールの一意の名前です。この名前のツールがすでに存在する場合、Diversion はそれを置き換え、リスト内の位置を保持します。新しいツールはリストの末尾に追加されます。

`--pattern` はファイルパスに対してマッチングされる正規表現です (例: `\.prefab$`)。[ファイルパターン](/ja/advanced/external-merge-tools#ファイルパターン) を参照してください。

`--cmd` は実行するコマンドラインです。ツールが結果を書き込むファイルである `$RESULT` を含める必要があります。`$ANCESTOR`、`$CURRENT`、`$INCOMING` も使用できます。[コマンドプレースホルダー](/ja/advanced/external-merge-tools#コマンドプレースホルダー) を参照してください。

`[--no-trust-exit-code]` はツールの終了コードを無視し、代わりにマージされたファイルを確認します。保存せずに閉じても `0` で終了するビジュアルツールに使用してください。

Mac と Linux では、シェルが `$` などの特殊文字を変更しないように、`--pattern` と `--cmd` を単一引用符で囲んでください。

例:

```bash theme={null}
dv merge-tool add --name mergiraf --pattern '\.(json|ya?ml)$' --cmd 'mergiraf merge $ANCESTOR $CURRENT $INCOMING -o $RESULT'
```

## -d

名前を指定してツールを削除します。

```bash theme={null}
dv merge-tool -d <name>
```

例:

```bash theme={null}
dv merge-tool -d mergiraf
```

## ツールを使用する

```bash theme={null}
dv merge <branch> --conflict_resolution merge-tool
dv update --conflict_resolution merge-tool
dv revert <commit_id> --conflict_resolution merge-tool
```

[マージツールで競合を解決する](/ja/advanced/external-merge-tools#マージツールで競合を解決する) を参照してください。
