git difftool问题:没有设置LOCAL,REMOTE变量

时间:2009-12-18 19:43:41

标签: git difftool

根据doc和各种答案,git difftool将调用指定的可执行文件(通常是shell脚本),并将环境变量LOCAL和REMOTE设置为文件路径。但是当我尝试时,LOCAL和REMOTE没有设置。我尝试过以下测试:

git config --global diff.tool mytest  
git config --global difftool.mytest.cmd mytest.sh  
git config --global difftool.prompt false  

使用mytest.sh:

#!/bin/sh  
echo "LOCAL:$LOCAL REMOTE:$REMOTE"  

调用:

git difftool --tool mytest <commitid> -- <path-to-file>  

输出:

LOCAL: REMOTE:  

有什么建议吗?

2 个答案:

答案 0 :(得分:4)

手册页的含义是difftool。&lt; tool&gt; .cmd在其命令行中可以有$LOCAL$REMOTE。这些将被相关的文件路径替换。这些变量并不打算导出到您的环境中。

通过示例演示,这是原始设置的重新制作版本。

git config --global diff.tool mytest  
git config --global difftool.mytest.cmd 'mytest.sh $LOCAL $REMOTE'
git config --global difftool.prompt false

答案 1 :(得分:0)

这是我一直使用的差异包装器(使用tkdiff):

#!/bin/sh

# diff is called with 7 parameters:
# path old-file old-hex old-mode new-file new-hex new-mode

tkdiff "$2" "$5"

使用参数而不是$LOCAL$REMOTE