我不能让git diff使用opendiff

Ida*_*Ida 7 git git-diff opendiff

我想使用opendiff作为git diff的默认diff工具.这曾经工作但由于某种原因停止工作.我正在使用脚本:

echo opendiff $2 $5 > opendiff-git.sh
Run Code Online (Sandbox Code Playgroud)

在.gitconfig中设置:

[diff]
external = ~/opendiff-git.sh
Run Code Online (Sandbox Code Playgroud)

这最近停止了我的工作.怎么了?

更新:当我克隆一个新的存储库时,一切正常!奇怪!

小智 2

我在尝试将 opendiff 设置为我的 git diff 和合并工具时发现了这个问题。奇怪的是,当我使用 echo opendiff $2 $5 > opendiff-git.sh 创建脚本时,脚本不包含参数占位符 $2 $5 我手动添加它们,然后它开始工作!

这个命令

echo opendiff $2 $5 > opendiff-git.sh
Run Code Online (Sandbox Code Playgroud)

导致 opendiff-git.sh 文件包含

opendiff
Run Code Online (Sandbox Code Playgroud)

我手动添加了两个参数占位符 $2 $5

opendiff $2 $5
Run Code Online (Sandbox Code Playgroud)

按照 knittl 的建议使 shell 脚本可执行

chmod +x ~/opendiff-git.sh
Run Code Online (Sandbox Code Playgroud)

它有效!

  • 您必须在命令行上转义“$”,或者 shell 尝试查找名称为“$2”和“$5”的变量,这些变量不存在,因此它们被替换为空字符串。尝试运行此命令: echo opendiff \$2 \$5 > ~/opendiff-git.sh (2认同)