是否有一个命令行开关可以传递给gitdiff和其他默认使用较少寻呼机的命令?我知道这些方法存在:

git diff | cat。。。删除所有语法突出显示gitconfig--global core.pager cat将global.gitconfig中的寻呼机设置为cat导出GIT_PAGER=猫

但我更喜欢命令行开关。


当前回答

关于管道时禁用的颜色:

使用--color可避免禁用着色。

git diff—颜色|更少-R

或者强制配置(例如.gitconfig):

[color]
        ui = on

git diff |小于-R

对于非彩色工具,请使用:

gitdiff--无颜色|一些基本工具

导出环境变量LESS=-R(在例如.bashrc中)默认情况下在“LESS”中启用颜色支持:

git diff|更少

其他回答

--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

默认情况下,git使用less作为寻呼机。我通常更喜欢,因为它会打印第一页,然后允许您滚动浏览内容。

此外,完成后,内容将保留在控制台中。这通常很方便,因为您通常希望在查找后对内容进行一些处理(例如,给commiter发电子邮件,告诉他他在上次提交时引入了一个bug)。

如果您想通过管道传输内容,滚动打印所有内容将很不方便。更多的好处是你可以将它与管道结合起来,它将贯穿一切,例如。

# Find the commit abcdef123 in the full commit history and read author and commit message
git log |grep -C 5 'abcdef123'

基本上,更多的内容是您所需要的,除非您不希望内容在完成后保留在控制台中。要使用更多,请执行以下操作。

git config --global core.pager 'more'

正如前面提到的答案,如果内容少于一个屏幕,则将-F选项传递给less会导致它退出。然而,在这样做之后,屏幕被重置,你最终看不到内容。

-X选项消除了这种行为。因此,我使用以下方法根据内容量启用条件分页:

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

您还可以在全局配置中禁用/启用特定输出的寻呼机:

git config --global pager.diff false

或者要设置core.pager选项,只需提供一个空字符串:

git config --global core.pager ''

在我看来,这比你说的那样把它设置成猫要好。

我的.gitconfig中有这个hunk,它似乎工作正常(diff和show都禁用):

[pager]
    diff = false
    show = false