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