windows - Git difftool 不启动外部 DiffMerge 程序

标签 windows git bash diffmerge

我一直遵循此 blog entry by Dave 中“answer ”链接中的说明因为我在 Windows 7 上使用 SourceGear 的 DiffMerge 工具。我已将 git\cmd 目录添加到我的 PATH 系统变量并将我的 git-diff-diffmerge-wrapper.sh 文件放在那里:

#!/bin/sh
"C:\Program Files\SourceGear\Common\DiffMerge\sgdm.exe" "$1" "$2" | cat

(是的,这是 DiffMerge 的正确路径。)

我已经编辑了我的 .gitconfig 文件以包含 diffdifftool block (我直接从帖子中复制了这些行,并且他确实在注释掉的 #external 行中留下了。我将其添加到我的文件的末尾;可以吗?)

[diff]
    # external = git-diff-wrapper.sh
    tool = diffmerge
[difftool "diffmerge"]
    cmd = git-diff-diffmerge-wrapper.sh "$LOCAL" "$REMOTE"

所以我转到 git bash 并执行 git difftool HEAD~ 67b8679 -- js/site/pizzabuilder.js 并按回车键。什么都没发生。如果我执行 git difftool HEAD~ 67b8679,离开我想要的文件,我得到这个:

Viewing: 'js/angular/hutlovers/hutlovers.js'
Launch 'diffmerge' [Y/n]: Y
C:\Program Files (x86)\Git/libexec/git-core/mergetools/defaults: line 17: git-diff-diffmerge-wrapper.sh: command not found

Viewing: 'js/angular/localization/StoreListCtrl.js'
Launch 'diffmerge' [Y/n]: n

Viewing: 'js/pizzahut/site/browser_version.js'
Launch 'diffmerge' [Y/n]: n

Viewing: 'js/pizzahut/site/dashboard.js'
Launch 'diffmerge' [Y/n]: n

对于提交之间不同的所有文件,它会继续,但它永远不会启动 DiffMerge。我不知道如何解释错误;找不到什么命令? 差异工具?我在 git 中运行 1.7.11,difftool 应该从 1.6.3 版开始包含在 git 中。

当我查看错误中引用的文件的第 17 行时,这就是那里的内容:

( eval $merge_tool_cmd )

作为这个 block 的一部分:

diff_cmd () {
    merge_tool_cmd="$(get_merge_tool_cmd "$1")"
    if test -z "$merge_tool_cmd"
    then
        status=1
        break
    fi
    ( eval $merge_tool_cmd )
    status=$?
    return $status
}

谁能帮帮我?我是 git 的日常用户,但算不上高级用户,而且我对 Windows shell 脚本一无所知,所以按照那篇文章中的说明进行操作几乎是我目前知识的限制。

最佳答案

我知道这是一个老问题,我知道我的情况可能只是我太笨了,但我确实转动了​​轮子试图弄清楚这个问题。不过,希望与我犯过同样错误的人将来不会完全迷路。


确保使用 git diff 显示项目!

我有一个非常简单的一行更改。执行了 git add . 然后被打断了。回来完成并决定仔细检查差异。我没有意识到执行 git add 会阻止我使用 git difftool

执行 git reset 允许 git difftool 工作。

关于windows - Git difftool 不启动外部 DiffMerge 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24194569/

相关文章:

c# - SignalR 服务在启动时崩溃

c++ - QtWebkit 作为桌面应用程序 GUI

php - Microsoft 的任何适用于 Windows 的 PHP 编辑器?

python - gitPython 克隆 GitCommandError

git - 避免在 BitBucket 管道中使用 Master 分支

java - 获取JAVA PID PHP

linux - Bash - 替换逗号之间的随机文本

windows - Windows 框上的 nodejs 上的 persistence.js

bash - 我可以在远程服务器上运行位于本地机器上的 bash 脚本吗?

windows - 将默认的 git 源添加到 visual studio?