git mergetool
是一个shell脚本(/bin/sh;/bin/bash可以运行它,如果您只有bash而不是普通的旧sh)。它:
-
从索引中提取三个文件(
.BASE
=第1阶段入口,
.LOCAL
=第2阶段入口,
.REMOTE
=第3阶段进入)。第四个文件用作合并工具的检查如果要手动进行合并,则无需执行此操作。
-
使用第二个shell脚本运行选定的合并工具。
-
根据工具及其退出状态,询问合并是否成功,或者使用退出状态来判断合并是否成功。如果你说是的话,它就跑了
git add
在合并的文件上。
-
删除在步骤1中创建的文件。
对于所有未合并的文件,它在循环中执行此操作。
您的工作是修改shell脚本,以便它提取这三个文件并离开它们,即执行(大部分)步骤1,然后根本不执行其余步骤。只要找到剧本就行了
$(git --exec-path)/git-mergetool
然后用另一个名字把它复制到别的地方,例如,
git-extract-unmerged
,将其修改为您想要的行为方式,然后运行
git extract-unmerged
你会得到那些
.底座
我是说,
.本地
,和
.远程
你想要的文件。
(或者你可以设置
merge.conflictStyle
到
diff3
现在工作树文件已经包含了您需要的所有信息,所以不必再为上面的所有内容操心了。我就是这么做的。)