当我使用 来查看较大的差异时git diff
,它会使用 进行分页less
。通过打开另一个窗口并检查来自ps -aux
和 的数据可以确认这一点/proc
。
但是,当less
由 Git 调用时,它不会将终端内容恢复到命中后的先前状态q
(差异内容保留在终端中)。但当我这样做时
git diff commit1 commit2 --color | less -R
less
按 键退出q
,内容消失,终端恢复到之前的状态。
更有趣的是,如果我这样做
export PAGER=less LESS='-R'
和 invoke git diff
(或调用寻呼机的任何其他命令)的less
行为与直接从 Bash shell 调用相同。
这是描述我的问题的简短屏幕截图。在左侧窗格中,命令执行如下:
unset PAGER GIT_PAGER LESS
git diff HEAD^ HEAD
在右侧窗格中您可以看到命令。最新提交有 100 多行y
写入文件。在两个窗格上less
均使用 key 退出q
。
谁能告诉我有什么不同并解释为什么?