在Git Extensions设置中,有更改Mergetool的选项,但我无法弄清楚我应该使用什么语法以及为什么。似乎有4个变量:$BASE,$LOCAL,$REMOTE,$MERGED,我应该将这些传递给WinMergeU.exe,但是要使用哪些命令行参数呢?
我已经尝试过几次搜索,但没有一个答案实际上似乎可行。
概述
以下是设置GIT版本控制的说明,以便您可以使用比默认安装更好的工具集。此设置要求已经安装了GIT扩展,并涉及在GIT扩展中配置Winmerge。
安装
按照所有提示进行操作,并将其安装在Winmerge的默认目录中。
在GIT版本控制中配置Winmerge
在文本编辑器中打开一个新文档。
复制/粘贴以下内容并将该文档保存为“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"
进入你的"用户->用户名"目录,找到 .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 Extensions->Git Config”。如果您正确安装并引用了工具到它们的目录,那么您的全局设置页面应该如下所示(注意:请在姓名和电子邮件上填写您自己的信息):
合并工具:winmerge
合并工具路径:c:/Program Files (x86)/winmerge/winmergeu.exe
合并工具命令:wMerge.sh "$MERGED" "$REMOTE"
比较工具:winmerge
比较工具路径:c:/Program Files (x86)/winmerge/winmergeu.exe
比较工具命令:"c:/Program Files (x86)/winmerge/winmergeu.exe" "$LOCAL" "$REMOTE"
行尾:检出保持不变,提交保持不变
转到“检查清单”选项卡以验证GIT是否全部“绿色”并满足您的设置。
cmd = "'c:/Program Files (x86)/winmerge/winmergeu.exe'" -r "$LOCAL" "$REMOTE"
- ttulinsky在Git Extensions v2.47.3中,设置这个非常容易:
设置 -> 全局设置 -> 在“Mergetool”的下拉菜单中手动输入:WinMerge
,然后观看奇迹。
'Difftool' 下拉菜单也是如此。
|| || ||
\/ \/ \/
在下拉菜单中预设“WinMerge”选项不是一个好主意,这太傻了。无论如何。
在 Windows 7 上,下面是最终适用于我的方法。请注意,在我的程序文件路径周围使用了 "'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适用于我的“全局设置”:
合并工具:winmerge
合并工具路径:D:/path/to/WinMerge/WinMergeU.exe
合并工具命令:"D:/path/to/WinMerge/WinMergeU.exe" -e "$MERGED"
这将使WinMerge使用git生成的“冲突文件”。
-e
可按ESC键关闭winmerge。
差异工具:winmerge
差异工具路径:D:/path/to/WinMerge/WinMergeU.exe
差异工具命令:"D:/path/to/WinMerge/WinMergeU.exe" -e "$LOCAL" "$REMOTE" -dl "Local" -dr "Remote"
-dl
和 -dr
设置左侧和右侧面板的描述。
[merge]
tool = winmerge
[mergetool "winmerge"]
cmd = $PROGRAMFILES/WinMerge/WinMergeU.exe "$PWD/$MERGED"
这个解决方案有两个独特之处:
WinMergeU.exe *conflictfile*
,而双侧调用则会受到左窗口呈现的<<<<<<<
,=======
和>>>>>>>
标记的影响,这些标记是$MERGED包含的。$PROGRAMFILES变量由git bash维护,并且(与本机Windows cmd上的类似变量不同)它导航到“Program Files(x86)”。