mergetool
运行合并冲突解决工具来解决合并冲突
语法
- git mergetool [--tool=<tool>] [-y | --[no-]prompt] [<file>…]
描述
使用 git mergetool
运行多个合并实用程序之一来解决合并冲突。它通常在 git merge
之后运行。
如果给出一个或多个<file>
参数,将运行合并工具程序来解决每个文件上的差异(跳过那些没有冲突的文件)。指定目录将包含该路径中所有未解析的文件。如果未指定<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
来显式提供该工具的完整路径。例如,您可以通过设置mergetool.kdiff3.path
来配置kdiff3的绝对路径。否则,git mergetool
假定该工具在PATH中可用。 -
通过指定在配置变量
mergetool.<tool>.cmd
调用的命令行,可以自定义git mergetool
来运行替代程序,而不是运行已知的合并工具程序之一。 -
当 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
-
在每次调用合并解析程序前提示,给用户一个跳过路径的机会。
- -g
--gui -
当
git-mergetool
与调用-g
或--gui
选项默认合并工具会从配置的读取merge.guitool
变量,而不是merge.tool
。如果merge.guitool
没有设置,我们将回退到下配置的工具merge.tool
。 - -no-gui
-
这将覆盖先前的
-g
或--gui
设置,并从配置的merge.tool
变量中读取默认的合并工具。 - -O<orderfile>
-
按照
<orderfile>
中指定的顺序处理文件,该命令每行具有一个Shell Glob模式。这将覆盖diff.orderFile
配置变量。要取消diff.orderFile
,请使用-O/dev/null
。
Configuration
- mergetool.<tool>.path
- 覆盖给定工具的路径。这在你的工具不在PATH中时很有用。
- mergetool.<tool>.cmd
- 指定命令以调用指定的合并工具。在外壳程序中使用以下可用变量评估指定的命令:
-
BASE
是临时文件的名称,其中包含要合并的文件的公共基础(如果有);
-
LOCAL
是包含当前分支上文件内容的临时文件的名称;
-
REMOTE
是一个临时文件的名称,其中包含来自合并分支的文件内容;
-
MERGED
包含合并工具应该向其中写入成功合并结果的文件的名称。
- mergetool.<tool>.hideResolved
- 允许用户覆盖特定工具的全局
mergetool.hideResolved
值 - mergetool.<tool>.trustExitCode
- 对于自定义的合并命令,指定是否可以使用合并命令的退出代码来判断合并是否成功。如果没有设置为 true,则检查合并目标文件的时间戳,如果文件已经更新,则假设合并成功,否则会提示用户说明合并成功。
- mergetool.meld.hasOutput
- 较早版本的 meld 不支持 --output 选项。 Git将通过检查 meld --help 的输出来尝试检测 meld 是否支持 --output 。配置 mergetool.meld.hasOutput 将使Git跳过这些检查,而是使用配置的值。将 mergetool.meld.hasOutput 设置为 true 会告诉Git无条件使用 --output 选项,而 false 则避免使用 --output 。
- mergetool.meld.useAutoMerge
- 当给出 --auto-merge 时,meld将自动合并所有不冲突的部分,突出显示冲突的部分并等待用户决定。将 mergetool.meld.useAutoMerge 设置为 true 会告诉Git无条件地将 --auto-merge 选项与 meld 结合使用。将此值设置为 auto 可以使git检测是否支持 --auto-merge,并且仅在可用时才使用 --auto-merge 。值为 false 避免一起使用 --auto-merge ,它是默认值。
- mergetool.vimdiff.layout
- vimdiff 后端使用此变量来控制其拆分窗口的外观。即使您使用 Neovim ( nvim ) 或 gVim ( gvim ) 作为合并工具也适用。有关详细信息,请参阅后端特定提示部分。
- mergetool.hideResolved
- 在合并期间,Git 将自动解决尽可能多的冲突,并在其无法解决的任何冲突周围写入包含冲突标记的 MERGED 文件; LOCAL 和 REMOTE 通常代表 Git 冲突解决之前的文件版本。此标志会导致 LOCAL 和 REMOTE 被覆盖,以便仅将未解决的冲突呈现给合并工具。可以通过 mergetool.<tool>.hideResolved 配置变量为每个工具配置。默认为 false 。
- mergetool.keepBackup
- 执行合并后,带有冲突标记的原始文件可以另存为扩展名为 .orig 的文件。如果将此变量设置为 false ,则不会保留该文件。默认为 true (即保留备份文件)。
- mergetool.keepTemporaries
- 调用自定义合并工具时,Git使用一组临时文件传递给该工具。如果工具返回错误且此变量设置为 true ,则将保留这些临时文件,否则将在工具退出后将其删除。默认为 false 。
- mergetool.writeToTemp
- Git 默认情况下在工作树中写入冲突文件的 BASE ,LOCAL 和 REMOTE 临时版本。设置为 true 时,Git将尝试为这些文件使用临时目录。默认为 false 。
- mergetool.prompt
- 每次调用合并解析程序前都会有提示。