如何在Git扩展中使用Winmerge?
我使用的是Git扩展 ,它预先安装并设置KDiff作为解决合并冲突的diff工具。 我非常喜欢Winmerge,并想用WinmergereplaceKDiff。
在Git扩展设置中,有设置来更改Mergetool,但我似乎无法弄清楚我应该使用什么语法,为什么。 似乎有4个variables:$ BASE,$ LOCAL,$ REMOTE,$ MERGED。 看来我应该把这些传给WinMergeU.exe,但用哪个命令行参数呢?
我已经尝试了几次search,但没有答案,似乎工作。
  概观 
 以下是有关如何设置GIT版本控制的说明,以便您可以使用比默认安装更好的一组工具。 该设置要求已安装GIT扩展,并且需要在GIT扩展中configurationWinmerge。 
  安装 
 浏览所有提示并安装在Winmerge的默认目录中。 
  在GIT版本控制中configurationWinmerge 
 在文本编辑器中打开一个新的文档。 复制/粘贴以下内容并将文档保存为“wMerge.sh”到您的“C:\ Program Files(x86)\ Git \ bin \”目录中。 
echo Launching WinMerge: $1 $2 "C:/Program Files (x86)/WinMerge/WinMergeU.exe" -e -u -dl "Original" -dr "Modified" "$1" "$2" 转到您的“用户 – >用户名”目录并find.gitconfig文件。 打开你最喜欢的编辑器复制/粘贴下面的代码并保存:
 [user] name = enter your name email = youremail@yourdomain.com [core] autocrlf = false [merge] tool = winmerge [mergetool "winmerge"] cmd = wMerge.sh \"$MERGED\" \"$REMOTE\" path = c:/Program Files (x86)/winmerge/winmergeu.exe [mergetool] keepBackup = false trustExitCode = false [diff] guitool = winmerge [difftool "winmerge"] path = c:/Program Files (x86)/winmerge/winmergeu.exe cmd = \"c:/Program Files (x86)/winmerge/winmergeu.exe\" \"$LOCAL\" \"$REMOTE\" 
运行“GitExtensions”,转到“工具 – >设置 – > Git扩展 – > Gitconfiguration”。 如果你已经正确地完成了你的安装,并将这些工具引用到他们的目录中,那么你的全局设置页面应该如下所示(注意:请填写姓名和电子邮件地址):
  mergetool: winmerge 
  mergetool的path: c:/Program Files (x86)/winmerge/winmergeu.exe 
  mergetool命令: wMerge.sh "$MERGED" "$REMOTE" 
  difftool: winmerge 
  pathto difftool: c:/Program Files (x86)/winmerge/winmergeu.exe 
  difftool命令: "c:/Program Files (x86)/winmerge/winmergeu.exe" "$LOCAL" "$REMOTE" 
行结束:原样签出,按原样提交
导航到清单选项卡,以validationGIT是“绿色”,并满意您的设置。
在Git Extensions v2.47.3上,设置它非常简单:
 设置 – >全局设置 – >在“Mergetool”下拉菜单中手动写入: WinMerge并观看奇迹。 
“Difftool”下拉菜单也一样。

 || || || \/ \/ \/ 

这只是愚蠢的'WinMerge'选项没有预先填充在下拉列表中。 好吧。
 在Windows 7上,这是最终为我工作。 请注意我的程序文件path中的"'c:/path/here'"引号。 
 [merge] tool = winmerge [mergetool "winmerge"] cmd = "'C:/Program Files (x86)/WinMerge/WinMergeU.exe'" -e "$MERGED" [diff] tool = winmerge [difftool "winmerge"] cmd = "'C:/Program Files (x86)/WinMerge/WinMergeU.exe'" -e "$LOCAL" "$REMOTE" -dl "Local" -dr 
@ sebastiaan的答案不适合我(也许它已经过时了?)
这些是使用GitExtensions 2.28工作的“全局设置”:
  Mergetool: winmerge 
  mergetoolpath: D:/path/to/WinMerge/WinMergeU.exe 
  Mergetool命令: "D:/path/to/WinMerge/WinMergeU.exe" -e "$MERGED" 
 这会导致WinMerge使用由git生成的“冲突文件”。 
  -e允许按下ESCclosureswinmerge。 
  Difftool: winmerge 
  difftool的path: D:/path/to/WinMerge/WinMergeU.exe 
  Difftool命令: "D:/path/to/WinMerge/WinMergeU.exe" -e "$LOCAL" "$REMOTE" -dl "Local" -dr "Remote" 
  -dl和-dr设置左侧和右侧窗格的描述。 
在configuration文件中添加或更改以下内容:
 [merge] tool = winmerge [mergetool "winmerge"] cmd = $PROGRAMFILES/WinMerge/WinMergeU.exe "$PWD/$MERGED" 
该解决scheme在两个方面是明显的:
-  只需调用WinMergeU.exe *conflictfile*,而双面调用遭受左手窗口呈现<<<<<<<,=======和>>>>>>>标记的事实$ MERGED包含。
- 在每个回购的基础上应用mergetool – 我正在编辑$ GIT_DIR / config文件。 调用没有–system或–global参数的git config也可以达到同样的结果。 这是要注意的是,有几个configuration范围可供select 。
$ PROGRAMFILESvariables由git bash维护(与本机windows cmd上的类似variables不同),它导航到“Program Files(x86)”。