我的终端中的彩色、并排、内联 git diff 输出

Jon*_*nah 6 git git-diff sdiff

请注意,这个问题不是问题的重复,而是问题“当我执行 \xe2\x80\x9cgit diff\xe2\x80\x9d 时如何获得并排差异?”的后续问题。。这个问题寻求新的信息和问题的解决方案。

\n\n

另外,请注意,我只寻求输出在终端中内联的解决方案,就像默认的git diff那样——我不想要任何打开外部 gui diff 程序的东西。

\n\n

迄今为止的进展

\n\n

我已遵循上面链接的 SO 问题的建议,并将以下可执行文件放在我的路径上:

\n\n
#!/bin/bash\n\n# side-by-side diff with custom options:\nsdiff -w200 -l "$2" "$5" \n
Run Code Online (Sandbox Code Playgroud)\n\n

然后我可以像这样测试它,例如:

\n\n
GIT_EXTERNAL_DIFF=mydiff git diff HEAD HEAD~1\n
Run Code Online (Sandbox Code Playgroud)\n\n

我会得到这样的输出:

\n\n

截屏

\n\n

问题

\n\n

正如预期的那样,这是:

\n\n
    \n
  • 内嵌在终端中
  • \n
  • 并排输出
  • \n
\n\n

然而,它有几个问题:

\n\n
    \n
  • 如果多个文件发生更改,则在处理第一个文件后它会终止,并输出错误fatal: external diff died, stopping at <filename>
  • \n
  • 输出不使用绿色/红色来显示新代码/删除。
  • \n
\n\n

有没有办法解决这两个问题sdiff?如果没有,有没有办法使用/usr/bin/diff内置的 git diff 程序或其他终端程序来做到这一点?我不在乎如何实现目标。我只想要内联、并排的颜色差异。

\n

fum*_*uma 4

[这]对我来说效果很好,即使是颜色。(感谢@github.com/cockroachdb/cockroach)

如果您的终端在使用 sdiff 显示颜色时出现问题,您可能需要将sdiff通过管道传输到colordiff,如下所示:

sdiff -w200 -l "$2" "$5" | colordiff | grep -E ...
Run Code Online (Sandbox Code Playgroud)