## Name

git-mergetool - 运行合并冲突解决工具来解决合并冲突

## 概要

    git mergetool [--tool=<tool>] [-y | --[no-]prompt] [<file>…]

## 描述

使用`git mergetool`运行的几种合并一个实用程序来解决合并冲突。它通常在之后运行`git merge`。

如果给出一个或多个<file>参数，则将运行合并工具程序以解决每个文件上的差异（跳过那些没有冲突的文件）。指定一个目录将包含该路径中所有未解析的文件。如果未指定<文件>名称，`git mergetool`则会在每个存在合并冲突的文件上运行合并工具程序。

## 选项

-t <tool> --tool=<tool>

使用<tool>指定的合并解析程序。有效值包括emerge，gvimdiff，kdiff3，meld，vimdiff和tortoisemerge。运行`git mergetool --tool-help`有效的<工具>设置列表。

如果没有指定合并解析程序，`git mergetool`将使用配置变量`merge.tool`。如果配置变量`merge.tool`没有设置，`git mergetool`会选择一个合适的默认值。

您可以通过设置配置变量明确提供工具的完整路径`mergetool.<tool>.path`。例如，您可以通过设置配置kdiff3的绝对路径`mergetool.kdiff3.path`。否则，`git mergetool`假定该工具在PATH中可用。

`git mergetool`可以通过指定要在配置变量中调用的命令行来定制运行其他程序，而不是运行其中一个已知的合并工具程序`mergetool.<tool>.cmd`。

当`git mergetool`使用此工具调用此工具时（通过`-t`或`--tool`选项或`merge.tool`配置变量），将调用已配置的命令行并将其`$BASE`设置为包含合并公共基础的临时文件的名称（如果可用）; `$LOCAL`设置为包含当前分支上文件内容的临时文件的名称; `$REMOTE`设置为包含要合并的文件内容的临时文件的名称，并将其`$MERGED`设置为合并工具应写入合并解析结果的文件的名称。

如果自定义合并工具使用其退出代码正确指示合并分辨率的成功，则可将该配置变量`mergetool.<tool>.trustExitCode`设置为`true`。否则，`git mergetool`将在用户工具退出后提示用户指示解析成功。

--tool-help

打印可能使用的合并工具列表`--tool`。

-y --no-prompt

在每次调用合并解析程序之前不要提示。如果通过`--tool`选项或`merge.tool`配置变量显式指定合并解析程序，则这是默认值。

--prompt

在每次调用合并解决方案之前提示，以使用户有机会跳过该路径。

-O<orderfile>

按照<orderfile>中指定的顺序处理文件，每行有一个shell glob模式。这覆盖了`diff.orderFile`配置变量（请参阅git-config [1]）。取消`diff.orderFile`，使用`-O/dev/null`。

## 临时文件

`git mergetool*.orig`在解析合并时创建备份文件。一旦文件合并并且`git mergetool`会话完成，这些文件就可以安全移除。

将`mergetool.keepBackup`配置变量设置为`false`导致`git mergetool`在文件成功合并时自动删除备份。