65.9K
CodeProject 正在变化。 阅读更多。
Home

Git + WinMerge + Cygwin

2010年5月22日

CPOL

1分钟阅读

viewsIcon

19946

如何在 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 可执行文件
运行 git difftool
© . All rights reserved.