7

我在终端中使用 Git。当我必须做出一些改变时,我会用git diff来看我改变了什么。我希望该输出结果保留在终端中,这样我可以在按下 后查看它Q,因为当我按下 时Q,结果都消失了。

4

2 回答 2

17

发生这种情况是因为 Git 通过寻呼机输出它。相反,使用:

git --no-pager diff

它被默认配置设置为使用寻呼机,您可以更改此默认设置以cat代替使用,以防止您必须--no-pager使用git config --global core.pager cat. 您可以在此处的文档中阅读更多信息。


通过寻呼机输出STDOUT和通过寻呼机要复杂得多,并且需要超出常规 Unix 重定向和管道范围的工具。您可以将输出重定向到STDERRwithtee和 pipe to less,这会产生您想要的错觉。请注意,这是一个 hack 并且滥用了STDERR

git diff | tee /dev/stderr | less

如果您打算经常使用它,您可能希望将其设为别名。

于 2012-12-22T15:35:45.073 回答
11

一般来说,我也不喜欢less随着内容消失。我通常将我的LESS环境变量设置为eFRX

export LESS=eFRX

正是它X使它停止带走内容。F如果只有一个屏幕的内容,则表示退出。R有助于解释 ANSI 颜色代码(您需要它)git diff,并X使其在退出前停止清除屏幕。

它会让你对使用的其他一些程序更满意less

于 2012-12-23T10:43:30.373 回答