根据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:
有什么建议吗?
答案 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
。