1

根据此处的文档和各种答案, 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:  

有什么建议么?

4

2 回答 2

4

手册页的意思是 difftool.<tool>.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
于 2009-12-18T20:44:34.820 回答
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"

它使用参数而不是$LOCALand $REMOTE

于 2009-12-18T19:49:49.390 回答