如何禁用 git pager 但只针对某些命令?

如何禁用 git pager 但只针对某些命令?

git log例如,我喜欢启用分页器,但不是git diff因为我有自己的可视化差异工具,而且我讨厌在差异完成后在命令行上按“q”。有办法吗?

答案1

您可以设置pager.diff配置变量来禁用特定子命令的分页器。请pager.<cmd>参阅git 配置(1)

git config --global pager.diff false

--global如果您只想对当前存储库进行此配置更改,请忽略。

答案2

只需将其添加| cat到调用的末尾即可git。这将导致git将整个内容转储为标准输出(因为不再具有交互性)。

例如

git diff --stat | cat

遗憾的是,作为副作用,你会丢失输出中的颜色,但你可以--color在之前添加来强制启用它| cat,结果如下:

git diff --stat --color | cat

答案3

这不是一个很好的解决方案,但是你可以有一个 git 包装器,它确定你正在运行的命令并通过 cat 管道传输输出以消除终端检测。

#!/bin/sh
case "$1" in)
  diff) git "$@" | cat;;
  *) exec git "$@";;
esac

当然,我的示例程序完全是无意义的。您需要跳过选项,而不是在程序中硬编码“$1”。

相关内容