5

请注意,这个问题不是重复问题,而是问题“当我执行“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

我会得到这样的输出:

截屏

问题

正如预期的那样,这是:

  • 在终端内联
  • 并排输出

但是,它有几个问题:

  • 如果多个文件已更改,则在处理第一个文件后死亡,输出错误fatal: external diff died, stopping at <filename>
  • 输出不使用绿色/红色来显示新代码/删除。

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

4

1 回答 1

3

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

如果您的终端在使用 sdiff 显示颜色时遇到问题,您可能希望通过管道将sdiff传递给colordiff,例如:

sdiff -w200 -l "$2" "$5" | colordiff | grep -E ...
于 2018-04-06T07:44:12.257 回答