28

我通常喜欢在 git 中使用寻呼机,但git stash寻呼机让我很恼火。调用时git stash list,我不想在寻呼机中显示三行输出——它迫使我q在键入后续git stash pop命令时再次按下以使输出再次不可用。

一种解决方案是使用

git --no-pager stash list

但这是太多的打字(我很懒)。按照手册页git config,我尝试了

git config --global pager.stash false

但这似乎并没有像文档所说的那样(实际上,我没有注意到任何影响)。然后我尝试了

git config --global alias.stash "--no-pager stash"

再次没有任何明显的影响。

配置得到正确更新,例如

git config pager.stash
false

它只是没有任何效果。我错过了什么?我怎样才能实现git stash不使用寻呼机?

4

4 回答 4

44

从 1.7.7.3 开始,git config --global pager.stash false实现了这一点。

于 2011-11-17T19:10:59.970 回答
10

它看起来像 stash,并且任何其他非内置命令(以 shell 脚本而不是 C 语言编写)都错过了寻呼机配置步骤。我向 git 邮件列表发送了一条便条询问这个问题;看起来这是一个已知问题,但并非完全可以修复。

您看到别名没有影响的主要原因是 git 默默地忽略了内置命令的别名;这个想法是你永远不想让命令无法访问。要使别名有机会运行,您需要将其命名为stash.

但是,我认为不允许简单的别名影响运行 git 命令的环境,该环境通常包括传递给git自身的选项。如果我使用像您这样的别名:

git config alias.foo --no-pager stash
git foo
fatal: alias 'foo' changes environment variables

如果您想正确执行此操作,则必须使用!git --no-pager stash,以便它生成一个子shell 并重新调用 git。

另一个临时修复,因为它是一个 shell 脚本,将是直接去编辑libexec/git-core/git-stash。只需找到该list_stash函数,然后将--no-pager选项添加到它的调用中git log,或者覆盖整个脚本,设置GIT_PAGER=cat在顶部。

于 2010-11-19T14:57:04.947 回答
7

或者,您可以配置less为在少于一个屏幕的输出时退出:

export LESS='-F'

或者,详细地说:

export LESS='--quit-if-one-screen'

如果你的 git 输出中有颜色,你可能还想传递-r标志:

export LESS='-F -r'
于 2012-03-26T09:19:15.840 回答
0
stll = "!git --no-pager stash list"

是你的朋友。

于 2015-02-20T22:15:41.743 回答