我一直遵循“戴夫的博客条目 http://www.davesquared.net/2009/05/setting-up-git-difftool-on-windows.html“ 链接在此answer https://stackoverflow.com/a/949242因为我使用的是 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
文件以包含diff
and difftool
块(我直接从帖子中复制了这些行,他确实留在了注释掉的地方#external
线。我将其添加到文件末尾;这可以吗? )
[diff]
# external = git-diff-wrapper.sh
tool = diffmerge
[difftool "diffmerge"]
cmd = git-diff-diffmerge-wrapper.sh "$LOCAL" "$REMOTE"
所以我去git bash
and do 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。我不知道如何解释这个错误;没有找到什么命令?difftool
?我在 git 中运行 1.7.11,并且difftool
据说从 1.6.3 版本开始就包含在 git 中。
当我查看错误中引用的文件的第 17 行时,结果如下:
( eval $merge_tool_cmd )
作为该块的一部分:
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 脚本一无所知,因此按照该帖子中的指示进行操作几乎是我目前知识的限制。