你可以发布(或链接)一个完整的例子吗?我已经准确地设置了你所描述的内容,它似乎工作得很好。那就是 diff 输出突出显示单词而不是行,并且我所做的所有更改都包含在内(也就是说,它没有提前删除或任何内容)。唯一的异常是差异总是会退出:
diff
external diff died, stopping at foo.tex.
这是因为 git diff ,当你以你使用它的方式运行时,表现得像独立的那样 diff 工具:如果文件不同,它将以非零退出代码退出。 Git不期望这种行为;它假定您的自定义命令将始终成功执行,并且错误退出代码表示实际问题。
git diff
Git已经知道文件是不同的,并且不需要外部命令来做出这个决定。外部命令严格来说是一种格式化工具。
如果你修改你的 diff-words.sh 脚本总是成功退出,事情应该更好:
diff-words.sh
#!/bin/sh git --no-pager diff --color-words "$2" "$5" exit 0