我在终端中使用Git。当我需要进行一些更改时,我使用git diff
查看我所做的更改。我希望输出结果保留在终端中,这样我就可以在按下Q后查看它,因为当我按下Q时,结果都会消失。
我在终端中使用Git。当我需要进行一些更改时,我使用git diff
查看我所做的更改。我希望输出结果保留在终端中,这样我就可以在按下Q后查看它,因为当我按下Q时,结果都会消失。
这是因为 Git 通过分页器输出它。取而代之,请使用:
git --no-pager diff
它默认设置为使用分页器,您可以更改此默认设置以改用cat
,以避免必须在git config --global core.pager cat
中键入--no-pager
。您可以在此处的文档中阅读更多内容。
STDOUT
输出并通过分页器输出要复杂得多,需要超出常规Unix重定向和管道的工具。您可以使用tee
将输出重定向到STDERR
并将其管道传输到less
,这会给您想要的错觉。注意,这是一种黑客技术,滥用了STDERR
的概念。git diff | tee /dev/stderr | less
如果您经常使用此内容,您可能希望将其设置为别名。
git
将输出通过分页程序(通常为less
)进行处理引起的。默认情况下,less
会发送终端初始化和去初始化序列,去初始化序列可能导致屏幕被清空。LESS
环境变量,而git
只是使用它。在这种情况下,你需要在LESS
环境变量中包含X
选项。-X
与--no-init
相同,它使less
停止向屏幕输出去初始化序列,从而停止被清除。默认情况下,当git
发现LESS
没有设置时,它默认为FRX
,其中包括保留屏幕不被清除的选项。less
随内容一起消失。我通常将LESS
环境变量设置为eFRX
:export LESS=eFRX
e
是一种在到达文件结尾并尝试滚动页面时退出的方式。 F
表示如果只有一个屏幕大小的内容,就直接退出。 R
有助于解释ANSI颜色代码(你需要在git diff
中使用它),而X
则使其在退出前停止清除屏幕。
这将使您对使用less
的其他程序更加满意。
less
的默认行为,直到我不得不在工作中使用Mac才知道我有多幸运。就我而言,这个解决方案比TRENT的更优越。 - sage88e
选项是--quit-at-eof
的缩写标志。使用此选项,您可以在滚动到最后一行时退出less页面,而无需按下q
键。 e
和E
略有不同,但差别不大。 - Roeniss