在我的终端

时间:2018-04-06 04:21:29

标签: git git-diff sdiff

请注意,此问题不是问题的重复,而是"How can I get a side-by-side diff when I do “git diff”?"问题的后续问题。这个问题寻求新的信息和问题的解决方案。

此外,请注意我只搜索其输出在终端内联的解决方案,如默认git diff - 我不想要任何打开外部gui diff程序的内容。

到目前为止的进展

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

#!/bin/bash

# side-by-side diff with custom options:
sdiff -w200 -l "$2" "$5" 

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

GIT_EXTERNAL_DIFF=mydiff git diff HEAD HEAD~1

我会得到这样的输出:

Screenshot

问题

按照预期,这是:

    终端
  • 内联
  • 并排输出

然而,它有几个问题:

  • 如果有多个文件发生了变化,它会在处理完第一个文件后死掉,输出错误fatal: external diff died, stopping at <filename>
  • 输出不使用绿色/红色显示新的代码/删除。

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

1 个答案:

答案 0 :(得分:3)

[THIS]对我来说很好,即使有颜色。 (谢谢@ github.com/cockroachdb/cockroach)

如果您的终端在使用sdiff显示颜色时出现问题,您可能希望将 sdiff 传递给 colordiff ,例如:

sdiff -w200 -l "$2" "$5" | colordiff | grep -E ...