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。