Git + WinMerge + Cygwin





0/5 (0投票)
如何在 Cygwin 下使用 WinMerge 查看 Git 的差异
背景
我花了一半天的时间才弄清楚这个问题,所以我想把它分享给处于类似情况的其他人。它源自 StackOverflow 上的这篇文章[^]。你可以在那里找到更多细节,但我确实需要进行一些修改才能使其在 Cygwin 和纯 Windows 命令提示符下都能完全工作。最后一次检查时,它在- Git 1.7.0.4 下工作
- WinMerge 2.12.4.0
- Cygwin 1.7.5
- Windows 7 x64
将 WinMerge 绑定到 Git
- 将以下行添加到你的 .gitconfig 文件中
[diff] tool = winmerge [difftool "winmerge"] cmd = git-difftool-winmerge-wrapper.sh \"$LOCAL\" \"$REMOTE\" [difftool] prompt = false
最后一个选项 (prompt = false) 是可选的。如果你希望 Git 在打开每个差异之前提示你,可以省略它。 - 创建一个名为 git-difftool-winmerge-wrapper.sh 的文件,并将其放在你的路径中。我把它放在我的主目录中。你可以通过修改 .bash_profile 文件(也在你的主目录中)并添加 PATH=${PATH}:${HOME} 来更改默认 Cygwin 路径,以包含你的主目录。
- 将以下内容添加到 git-difftool-winmerge-wrapper.sh
#!/bin/sh echo "Launching WinMergeU.exe \"$(cygpath -aw "$1")\" \"$(cygpath -aw "$2")\"" if [ -f $1 -a -f $2 ] then "C:/Program Files (x86)/WinMerge/WinMergeU.exe" -e -u -wl -dl "Base" -dr "Mine" "$(cygpath -aw "$1")" "$(cygpath -aw "$2")" else echo "skipping as one file doesn't exist" fi
显然,你可能需要根据你的本地安装路径调整 WinMerge 的安装文件夹。
在 Cygwin 下运行
只需运行 git difftool。在 Windows 命令提示符下运行
确保你的路径中包含所有必要的文件- Git 二进制文件
- git-difftool-winmerge-wrapper.sh
- WinMerge 可执行文件