仅在git中为stash命令关闭寻呼机

时间:2010-11-19 13:17:11

标签: git pager git-stash

我一般都喜欢在git中使用寻呼机,但对于git stash,寻呼机让我很烦。在调用git stash list时,我不希望在寻呼机中显示三行输出 - 它会强制我按q只是为了在输入以下内容时再次使输出不可用{ {1}}命令。

一种解决方案是使用

git stash pop

但那是打字很多(我很懒)。在man page of git config之后,我尝试了

git --no-pager stash list

但这似乎没有做文件所说的(实际上,我没有注意到任何影响)。然后我试了

git config --global pager.stash false

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

配置得到适当更新,例如

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

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

4 个答案:

答案 0 :(得分:30)

从1.7.7.3开始,git config --global pager.stash false完成了这项工作。

答案 1 :(得分: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

答案 2 :(得分:7)

或者,如果屏幕的输出值少于一个,您可以配置less退出:

export LESS='-F'

或者,详细说明:

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

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

export LESS='-F -r'

答案 3 :(得分:0)

stll = "!git --no-pager stash list"

是你的朋友。