将结果留在终端'git diff'

  • 本文关键字:git diff 终端 结果 git
  • 更新时间 :
  • 英文 :


我在终端使用Git。当我必须进行一些更改时,我使用git diff来查看我更改了什么。我希望输出结果留在终端中,这样我可以在按Q后查看它,因为当我按Q时,结果都消失了。

这是因为Git通过分页器输出它。相反,使用:

git --no-pager diff

默认配置设置为使用寻呼机,您可以将此默认设置更改为使用cat,以防止必须使用git config --global core.pager cat输入--no-pager。你可以在这里的文档中阅读更多。


通过分页器输出到STDOUT要复杂得多,并且需要超出常规Unix重定向和管道范围的工具。您可以使用tee将输出重定向到STDERR,并通过管道将输出重定向到less,这给人一种您想要的错觉。注意,这是一个hack,滥用了STDERR

的思想
git diff | tee /dev/stderr | less

您所经历的是由于git通过分页器(通常是less)管道输出。默认情况下,less会发送终端初始化和去初始化序列,去初始化序列会导致屏幕清屏。

要停止这种行为,你可以通过git config core设置一些不同的东西。或者,更有可能的是,您设置了LESS环境变量,而git只是在使用它。在本例中,您希望在LESS环境变量中包含X选项。-X--no-init相同,会导致less停止向屏幕输出去初始化序列,从而阻止其被清除。默认情况下,当git看到LESS未设置时,它默认为FRX,其中包括保持屏幕不清除的选项。

总的来说,我也不喜欢less和内容一起消失。我通常将LESS环境变量设置为eFRX:

export LESS=eFRX

e是一种退出的方式,当我击中文件的结尾,并试图页过去。F说,如果只有一个屏幕的内容,就退出。R有助于解释ANSI颜色代码(您将需要git diff), X使其在退出前停止清除屏幕。

使用less的程序会让你更开心。

相关内容

  • 没有找到相关文章

最新更新