是否有一个命令行开关可以传递给gitdiff和其他默认使用较少寻呼机的命令?我知道这些方法存在:
git diff | cat。。。删除所有语法突出显示gitconfig--global core.pager cat将global.gitconfig中的寻呼机设置为cat导出GIT_PAGER=猫
但我更喜欢命令行开关。
是否有一个命令行开关可以传递给gitdiff和其他默认使用较少寻呼机的命令?我知道这些方法存在:
git diff | cat。。。删除所有语法突出显示gitconfig--global core.pager cat将global.gitconfig中的寻呼机设置为cat导出GIT_PAGER=猫
但我更喜欢命令行开关。
当前回答
正如前面提到的答案,如果内容少于一个屏幕,则将-F选项传递给less会导致它退出。然而,在这样做之后,屏幕被重置,你最终看不到内容。
-X选项消除了这种行为。因此,我使用以下方法根据内容量启用条件分页:
git config --global --replace-all core.pager "less -F -X"
其他回答
正如前面提到的答案,如果内容少于一个屏幕,则将-F选项传递给less会导致它退出。然而,在这样做之后,屏幕被重置,你最终看不到内容。
-X选项消除了这种行为。因此,我使用以下方法根据内容量启用条件分页:
git config --global --replace-all core.pager "less -F -X"
--Git的任何寻呼机都不会告诉它不要使用寻呼机。如果输出适合单个屏幕,则将选项-F传递给less将告诉它不要分页。
用法:
git --no-pager diff
评论中的其他选项包括:
# Set an evaporating environment variable to use 'cat' for your pager
GIT_PAGER=cat git diff
# Tells 'less' not to paginate if less than a page
export LESS="-F -X $LESS"
# ...then Git as usual
git diff
这对我来说在Linux上使用Git版本2.1.4是有效的:
git config --global --replace-all core.pager cat
这使得Git使用cat而不是更少。cat只是将diff的输出转储到屏幕上,而没有任何分页。
您还可以在全局配置中禁用/启用特定输出的寻呼机:
git config --global pager.diff false
或者要设置core.pager选项,只需提供一个空字符串:
git config --global core.pager ''
在我看来,这比你说的那样把它设置成猫要好。
当我知道输出不是很长时,我喜欢不时禁用分页。为此,我发现了一个使用Git别名的妙招:
git config --global --add alias.n '!git --no-pager'
或者将以下内容添加到~/.gitconfig的[alias]部分:
n = !git --no-pager
这意味着您可以使用前缀n来关闭任何Git命令的分页,即:
git n diff # Show the diff without pager
git n log -n 3 # Show the last three commits without pager
git n show v1.1 # Show information about a tag