当我在Windows7上运行时,我一直在遵循这个戴夫的博客条目中“回答”链接中的说明,并使用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和difftool块(我直接从帖子中复制了行,而他确实离开了注释掉的#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然后点击enter。什么都没发生。如果我做了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应该包含在git中,从版本1.6.3开始。
当我查看错误中引用的文件的第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脚本一无所知,所以在这一点上,遵循文章中的说明几乎是我所了解的范围。
发布于 2014-06-21 02:18:21
DiffMerge
不确定这是否有用,但这是我对difftool和DiffMerge的配置。注意,我使用的是msysgit Bash (不确定它对Cygwin或PoshGit用户是否不同):
[diff]
tool = dm
[difftool "dm"]
cmd = C:/Program\\ Files/SourceGear/Common/DiffMerge/sgdm.exe \"$LOCAL\" \"$REMOTE\"我目前正在使用Git 2.0,但我似乎还记得在Git 1.8.x或者甚至可能早在Git 1.7.x的时候设置了它,所以尝试一下,看看它是否有效。
奖金与无与伦比的3专业
实际上,我现在使用无与伦比的3 Pro在Windows上进行了大部分的扩展,尽管有时我仍然会使用DiffMerge。下面是我所有的difftool设置,如果您想要切换的话:
[merge]
tool = bc3
[diff]
tool = bc3
[difftool "dm"]
cmd = C:/Program\\ Files/SourceGear/Common/DiffMerge/sgdm.exe \"$LOCAL\" \"$REMOTE\"
[difftool "bc3"]
cmd = "\"c:/program files (x86)/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\""
[mergetool "bc3"]
cmd = "\"c:/program files (x86)/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\""发布于 2018-05-29 21:32:42
我知道这是个老生常谈的问题,我意识到我的处境可能只是因为我太笨了,但我确实试图解决这个问题。尽管如此,有希望的是,一个和我犯同样错误的人将来不会完全迷失方向。
确保项目使用git diff**!**显示的
我有一个非常简单的一行改动。做了一个git add .然后就被打断了。回来看完后决定再核对一下。我没有意识到做git add会阻止我使用git difftool。
做git reset允许git difftool工作。
发布于 2016-01-07 22:27:52
其他的答案对我都没有用。我终于在Windows 7,8,10上使用了Git 2.6.3,2.7.0
1)确保您可以写入并使用存储在~/. .gitconfig中的全局.gitconfig,这是相对于您的主路径的。
使用:
git config --global --edit或者只需导航到windows资源管理器中的文件并以这种方式编辑它。
可以通过导航到windows中的环境变量( 7,右键单击计算机->Properties->高级系统设置->环境变量)来设置HOME变量。
2)确保扩散器在机器上的路径变量中。这与HOME变量位于同一个位置。我在我的人生道路上加入了这个:
C:\Program Files\SourceGear\Common\DiffMerge;3)要使缺省值扩散,在全局.gitconfig文件中添加以下内容:
[merge]
tool = diffmerge
[mergetool]
prompt = true
[mergetool "diffmerge"]
path = C:\\Program Files\\SourceGear\\Common\\DiffMerge\\sgdm.exe'\‘是一个转义字符
重复使用不同的工具,这就是我所需要的。不需要包装脚本或本地远程变量。
https://stackoverflow.com/questions/24194569
复制相似问题