我正在尝试让我的cygwin git安装与kdiff3一起工作。
我遵循了诺姆·刘易斯的指示:http://noamlewis.wordpress.com/2011/03/22/how-to-use-kdiff3-as-a-difftool-mergetool-with-cygwin-git/
但它不起作用:
正在运行
git mergetool -t kdiff3结果如下:
Normal merge conflict for ...
{local}: modified file
{remote}: modified file
Hit return to start merge resolution tool (kdiff3):
The merge tool kdiff3 is not available as '~/kdiff3.sh'但是,运行
~/kdiff3.sh按预期打开kdiff3。
这是我的.gitconfig:
[diff]
tool = kdiff3
[merge]
tool = kdiff3
[mergetool "kdiff3"]
path = ~/kdiff3.sh
keepBackup = false
trustExitCode = falsekdiff3.sh
#!/bin/sh
RESULT=""
for arg
do
if [[ "" != "$arg" ]] && [[ -e $arg ]];
then
OUT=`cygpath -wa $arg`
else
OUT=$arg
if [[ $arg == -* ]];
then
OUT=$arg
else
OUT="'$arg'"
fi
fi
RESULT=$RESULT" "$OUT
done
/cygdrive/c/Program\ Files\ \(x86\)/KDiff3/kdiff3.exe $RESULT发布于 2014-11-14 09:22:48
包装shell脚本不是必需的。我使用的是windows中安装的kdiff3,并将其文件夹设置在路径中,将git设置在cygwin中。如果您没有为kdiff3设置路径,则需要在cmd中将完整路径指定为cmd = /cygdrive/c/apps/KDiff3/kdiff3 ...
[diff]
tool = kdiff3
[merge]
tool = kdiff3
[difftool "kdiff3"]
cmd = kdiff3 \"$(cygpath -wla $LOCAL)\" \"$(cygpath -wla $REMOTE)\"
trustExitCode = false
[mergetool "kdiff3"]
cmd = kdiff3 \"$(cygpath -wla $BASE)\" \"$(cygpath -wla $LOCAL)\" \"$(cygpath -wla $REMOTE)\" -o \"$(cygpath -wla $MERGED)\"
keepBackup = false
trustExitCode = false
[mergetool]
prompt = false
[difftool]
prompt = false发布于 2014-02-01 00:01:18
简单的答案是,你不能在一个git配置文件中有一个'~‘(显然)。
因此,替换下面这一行:
[mergetool "kdiff3"]
path = ~/kdiff3.sh有了这个:
[mergetool "kdiff3"]
path = /home/mike.hadlow/kdiff3.sh让它工作得很好。
发布于 2015-12-31 20:25:40
对我来说,解决方案是更改全局.gitconfig文件。运行时
git config --global -l 我知道了
mergetool.kdiff3.cmd=‘C:/程序文件(x86)/KDiff3/kdiff3.exe’"$BASE“"$LOCAL”"$REMOTE“-o "$MERGED”
这正是它应该是的。我的问题是我安装了sourcetree,它“劫持”了工具设置。
在mergetool“.gitconfig”下,我的资源文件包含上面的命令
将此行更改为mergetool "kdiff3"
解决了这个问题。
https://stackoverflow.com/questions/21484240
复制相似问题