git diff:什么寻呼机?

git diff: what pager?

当我 运行 git diff 在某些文件上时,它使用的是什么寻呼机?我问是因为对于我在 Linux 中与寻呼机一起使用的所有其他命令行工具,当我退出时(通过键入 'q'),终端会恢复到之前显示的状态,这是我唯一的证据运行 s.t。作为命令行本身。例如:

> git help diff
> 

manless 本身等相同。但是当我 运行 git diff 时,整个差异都保留在屏幕上,即使它是数百个线长。所以如果我想查看以前命令的输出,我必须向后滚动。

这似乎是 less -X 的行为,"Disables sending the termcap initialization and deinitialization strings to the terminal"。

我已经阅读了 git diff 的文档,但是我在任何地方都没有看到它说明如何将终端恢复到 运行 差异之前的状态。我可以 export PAGER=/bin/less,但这没有效果(它可能是 git diff 的默认寻呼机)。

可能 git diff 以某种方式将 -X 参数传递给 less。但如果是这样,我无论如何也看不到关闭该行为(less 的手册页对此保持沉默)。

相关:https://unix.stackexchange.com/questions/167735/can-less-f-be-usefully-combined-with-termcap-initialization。但这并没有告诉我为什么 git diff 的行为就好像它正在传递 -X 参数一样。 (FWIW,我的终端报告它是 xterm-256color。)

要查看 Git 正在使用哪个寻呼机,您可以使用 git var GIT_PAGER。要找出 Git 参考的选项顺序,可以使用 运行 git var --help;手册页列出了选项的顺序。

请注意,默认情况下 Git 通过设置一些环境变量来调用寻呼机时设置一些选项。默认的编译时行为是设置 LESS=FRXLV=-c。如果您不需要这些选项,您可以通过自己设置环境变量来覆盖它们,在这种情况下,您的设置将覆盖 Git 的默认值。