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。