如何在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)”。