首页 > 解决方案 > git diff:什么寻呼机?

问题描述

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

> git help diff
> 

man,less本身一样,等等。但是当我运行时git diff,整个差异仍然在屏幕上,即使它有数百行长。因此,如果我想查看先前命令的输出,我必须向后滚动。

这似乎是less -X“禁用将 termcap 初始化和取消初始化字符串发送到终端”的行为。

我已经阅读了 的文档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。)

标签: gitdiffpager

解决方案


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

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


推荐阅读