我的终端中的彩色并排内联 git 差异输出
Colored, side by side, inline git diff output in my terminal
请注意,此问题不是问题 "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 "" ""
然后我可以像这样测试它,例如:
GIT_EXTERNAL_DIFF=mydiff git diff HEAD HEAD~1
我会得到这样的输出:
问题
按照预期,这是:
- 在终端中内联
- 并排输出
但是,它有几个问题:
- 如果改变了多个文件,它会在处理第一个文件后死亡,输出错误
fatal: external diff died, stopping at <filename>
- 输出不使用 green/red 颜色来显示新代码/删除。
有没有办法用 sdiff
解决这两个问题?如果没有,有没有办法使用 /usr/bin/diff
、内置的 git diff 程序或其他终端程序来做到这一点?我不在乎我如何实现目标。我只想要内联的,并排的颜色差异。
[THIS] 对我来说效果很好,即使有颜色。
(感谢@github.com/cockroachdb/cockroach)
如果您的终端在使用 sdiff 显示颜色时出现问题,您可能希望将 sdiff 传输到 colordiff,例如:
sdiff -w200 -l "" "" | colordiff | grep -E ...
请注意,此问题不是问题 "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 "" ""
然后我可以像这样测试它,例如:
GIT_EXTERNAL_DIFF=mydiff git diff HEAD HEAD~1
我会得到这样的输出:
问题
按照预期,这是:
- 在终端中内联
- 并排输出
但是,它有几个问题:
- 如果改变了多个文件,它会在处理第一个文件后死亡,输出错误
fatal: external diff died, stopping at <filename>
- 输出不使用 green/red 颜色来显示新代码/删除。
有没有办法用 sdiff
解决这两个问题?如果没有,有没有办法使用 /usr/bin/diff
、内置的 git diff 程序或其他终端程序来做到这一点?我不在乎我如何实现目标。我只想要内联的,并排的颜色差异。
[THIS] 对我来说效果很好,即使有颜色。 (感谢@github.com/cockroachdb/cockroach)
如果您的终端在使用 sdiff 显示颜色时出现问题,您可能希望将 sdiff 传输到 colordiff,例如:
sdiff -w200 -l "" "" | colordiff | grep -E ...