16.7 合并相关的设置

    可以通过git config命令设置与合并相关的配置变量,对合并进行配置。下面是一些常用的设置。

    (1)merge.conflictstyle

    该配置变量定义冲突文件中冲突的标记风格,有两个可用的风格,默认的"merge"或"diff3"。

    默认的"merge"风格使用标准的冲突分界符(<<<<<<<=======>>>>>>>)对冲突内容进行标识,其中的两个文字块分别是本地的修改和他人的修改。

    如果使用"diff3"风格,则会在冲突中出现三个文字块,分别是:<<<<<<<和|||||||之间的本地更改版本、|||||||和=======之间的原始(共同祖先)版本和=======和>>>>>>>之间的他人更改的版本。例如:


    User1 hacked. <<<<<<<HEAD Hello,user2. |||||||merged common ancestors Hello. ======= Hello,user1. >>>>>>>a123390b8936882bd53033a582ab540850b6b5fb User2 hacked. User2 hacked again.

    (2)merge.tool

    设定执行git mergetool进行冲突解决时调用的图形化工具。配置变量merge.tool可以设置为如下内置支持的工具:"kdiff3"、"tkdiff"、"meld"、"xxdiff"、"emerge"、"vimdiff"、"gvimdiff"、"diffuse"、"ecmerge"、"tortoisemerge"、"p4merge"、"araxis"和"opendiff"。


    $git config—global merge.tool kdiff3

    如果将merge.tool设置为其他值,则使用自定义工具进行冲突解决。自定义工具需要通过mergetool.<tool>.cmd对自定义工具的命令行进行设置。

    (3)mergetool.<tool>.path

    如果git mergetool支持的冲突解决工具安装在特殊位置,可以使用mergetool.<tool>.path对工具<tool>的安装位置进行设置。例如:


    $git config—global mergetool.kdiff3.path/path/to/kdiff3

    (4)mergetool.<tool>.cmd

    如果所用的冲突解决工具不在内置的工具列表中,还可以使用mergetool.<tool>.cmd对自定义工具的命令行进行设置,同时要将merge.tool设置为<tool>。

    自定义工具的命令行可以使用Shell变量。例如:


    $git config—global merge.tool mykdiff3 $git config—global mergetool.mykdiff3.cmd '/usr/bin/kdiff3 -L1 "$MERGED(Base)" -L2 "$MERGED(Local)" -L3 "$MERGED(Remote)" —auto-o "$MERGED" "$BASE" "$LOCAL" "$REMOTE"'

    (5)merge.log

    是否在合并提交的提交说明中包含合并提交的概要信息。默认为false。