git - 通过 git difftool 的 WinMerge 不断提示输入第二个文件

标签 git winmerge difftool

我使用了@VonC 的 excellent instructions配置我的开发系统,以便 git difftool <BRANCH1> <BRANCH1>将调用 WinMerge。这是我所做的:

  1. 将以下内容放入 ~/.gitconfig :

    [差异]

    tool = winmerge
    

    [差异工具“winmerge”]

    cmd = winmerge.sh \"$LOCAL\" \"$REMOTE\"
    

    [差异工具]

    prompt = false
    
  2. 创建了一个 /usr/bin/winmerge.sh内容如下:

    echo Launching WinMergeU.exe: $1 $2

    "C:/Program Files (x86)/WinMerge/WinMergeU.exe" -e -ub "$1" "$2"

现在,当我尝试通过 git difftool <BRANCH1> <BRANCH1> 启动 WinMerge 时,我收到似乎是正确的参数传递:

Launching WinMergeU.exe: /tmp/21qMVb_file1.c /tmp/1ACqik_file1.c

但是,由于某些奇怪的原因,WinMerge 并没有并排显示两个文件,而是提示输入第一个 文件作为右侧,第二个文件被接受为左侧:

[WinMerge should be displaying 2 files not one

为什么会这样?我在配置步骤中遗漏了什么?

附言当我在命令行上输入 winmerge.sh file1.c file2.c , WinMerge 立即并排显示这两个文件,正如我所期望的那样。

更新:哇哦,我刚刚注意到 Both paths are invalid WinMerge 提示底部的消息(并更新了屏幕截图以强调这一点)。看来这些文件根本不是由 difftool 生成的,或者路径有问题。

最佳答案

我解决了这个问题!

解决方案在于@pydave 提供的提示 answer in the same thread .我所要做的就是将 "$1""$2"(在 winmerge.sh 中)替换为 cygpath -w $1 cygpath -w $2

现在效果很好。正如我所料。

关于git - 通过 git difftool 的 WinMerge 不断提示输入第二个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6650655/

相关文章:

java - 尝试从 Git 推送时如何更改 GitHub 帐户?

git - "git check-ignore *"和 "git ls-files --other --ignored --exclude-standard"有什么区别?

windows - Mercurial/extdiff 没有更改为临时目录(正如我认为的那样)

Winmerge : how to ignore differences in lines with a special ending tag

git difftool : how to measure progress, 那是差异化和差异化的文件数量?

git - 如何让 WinMerge 成为我的 git mergetool?

git - 如何打印当前分支以外的分支的日志?

git - 将项目从 github 克隆到 RStudio 时出现错误消息 "unable to get local issuer certificate"

xml - WINMERGE显示汉字但只是XML

visual-studio-code - 我可以在 VS Code difftool 模式下突出显示字符吗?