协慌网

登录 贡献 社区

如何防止'git diff' 使用寻呼机?

是否有一个命令行开关可以传递给git diff和默认情况下less分页器的其他命令?

我知道我可以通过管道将其发送给 cat,但是这样可以删除所有语法突出显示。

GITPAGER=cat (或类似的东西)将全局. gitconfig 中的传呼机设置为 cat。但我有时想使用传呼机(取决于 diff 的大小)。

但是,如果有的话,我宁愿使用命令行开关。我找不到手册页中的内容。

答案

--no-pager会告诉它不要使用寻呼机。 -F放在单个屏幕中,则将选项 - 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

正如前面提到的答案,如果内容少于一个屏幕-F选项less但是,这样做之后,屏幕将重置,最终您将看不到内容。

-X选项消除了该行为。因此,我使用以下内容基于内容量启用条件分页:

git config --global --replace-all core.pager "less -F -X"

git config --global core.pager cat

摆脱所有存储库中所有命令的寻呼机。

pager.<cmd>设置而不是core.pager禁用单个 Git 子命令的分页,并且可以更改每个 Git 存储库的设置(忽略--global )。

有关详细信息,请参见man git-config并搜索pager.<cmd>