`less` 在从 Bash 和 Git 调用时表现不同

iBu*_*Bug 6 less git

当我查看一个很大的差异时git diff,它会被分页less。这是通过打开另一个窗口,从检查的数据证实ps -aux/proc

但是,当less被 Git 调用时,它不会将终端内容在命中后恢复到之前的状态q(差异内容保留在终端中)。但是当我这样做时

git diff commit1 commit2 --color | less -R
Run Code Online (Sandbox Code Playgroud)

并按less键退出q,内容消失,终端恢复到之前的状态。

更有趣的是,如果我做这些

export PAGER=less LESS='-R'
Run Code Online (Sandbox Code Playgroud)

和 invoke git diff(或任何其他调用寻呼机的命令)的less行为与直接从 Bash shell 调用一样。

一世

这是描述我的问题的简短屏幕截图。在左侧窗格中,命令执行如下:

unset PAGER GIT_PAGER LESS
git diff HEAD^ HEAD
Run Code Online (Sandbox Code Playgroud)

在右侧窗格中,您会看到命令。最新的提交是 100 多行y写入文件。在两个窗格上less都使用 key 退出q

谁能告诉我有什么不同并解释为什么?

use*_*110 12

文件

LESS环境变量未设置时,Git 将其设置为FRX(如果LESS设置了环境变量,Git 根本不会更改它)。

-X--no-init)的选项负责退出后不清除终端less

  • @iBug 看起来它已经融入 [source](https://github.com/git/git/commit/b3275838d969b7ecb91aae584226fccbeb046aca)。因此,您需要构建自己的 Git 来改变它。 (2认同)