git diff,使用外部 diff 程序,只需一次

Ste*_*mit 3 git diff git-difftool

在执行 时git diff,有时我想使用不同的 diff 工具(例如,cmp或者我自己的 bin 目录中的自制 word-diff 程序)。

许多类似 diff 的程序都有一个类似的选项

-D <diffprog>
Run Code Online (Sandbox Code Playgroud)

告诉他们使用其他 diff 或类似 diff 的程序。

我知道 git-difftool 和这个问题,但这并不是我想要的。我非常不想提前配置某些东西,并且我今天想要使用的非标准命令可能不是我明天想要使用的非标准命令。理想情况下,我希望能够从命令行一次性完成此操作。

(是否可以将 difftool 配置为能够使用官方列表中未列出的多个非标准工具?)

git diff如果使用我选择的 diff 工具太麻烦,我也可以使用类似的工具

git cat file | mydiff - file
Run Code Online (Sandbox Code Playgroud)

我知道没有“git cat”这样的命令。但这里的想法是手动将文件的存储库版本与本地版本进行比较,给出 git 命令来简单地发出文件的存储库(或在其他情况下,索引)版本。有这样的命令吗?

最后,如果没有git diff -D diffprog我所询问的假设选项,并且如果没有我假设的“git cat”命令之类的东西,那么我希望它们是错误的吗?

jth*_*ill 5

我想你可能正在寻找类似的东西

git show somecommit:path/to/file | mydiff - path/to/file
Run Code Online (Sandbox Code Playgroud)

或者

mydiff  <(git show somecommit:path/to/file) \
        <(git show someothercommit:path/to/file)
Run Code Online (Sandbox Code Playgroud)

但阅读了一点手册页后发现 difftool 确实接受路径限制器,并且也有选项-x,所以我没有看到任何问题。对于你评论中的情况我会使用

git difftool -yx mydiff @ -- file
Run Code Online (Sandbox Code Playgroud)