是否可以 'git diff' 2 个字符串?

Is it possible to 'git diff' 2 strings?

我有 2 个字符串,我想要它们之间的 git 差异。我可以创建 file1 并添加 string1 作为其内容。

然后我可以创建 file2 并添加 string2 作为其内容。然后我可以 git diff file1 和 file2.

但是,鉴于我将字符串作为字符串(而不是文件内容),我可以避免这些冗长的步骤吗?有没有更简单的方法?

类似于:

git diff "my first string" "my second string" # obviously does not work

您不必为此使用 git diff,Git 用于跟踪代码库中的更改。

有一个很好的linux命令

diff  <(echo "my first string" ) <(echo "my second string")

这个回答很好

如果你坚持git方式,

git diff $(echo "my first string" | git hash-object -w --stdin) $(echo "my second string" | git hash-object -w --stdin)  --word-diff

在实现层面,我猜想,git diff使用某个diff工具(比如diff)生成patch,然后重定向到pager(默认是less)查看。所以你不需要调用 git diff 来比较两个字符串。

如果你想要git diff输出的补丁文件格式,流畅的命令将是一个帮助。

diff -u <(echo "my first string" ) <(echo "my second string")

追加

-u告诉diff输出统一上下文的patch。

顺便说一句,git 提供了一个配置项 diff.external 来允许您生成差异,而不是通过内部差异机制,而是使用给定的命令。环境变量 GIT_EXTERNAL_DIFF 具有相同的效果。