2010-11-19 138 views
21

我一般喜欢在git中使用寻呼机,但对于git stash,寻呼机让我很烦恼。当拨打git stash list时,我不希望在寻呼机中显示三行输出 - 这迫使我按q只是在输入以下命令时使输出再次不可用:git stash pop命令。在git中关闭寻呼机的寻呼机只有

一个解决方案是使用

git --no-pager stash list 

但是这对很多键入(我懒)。继man page of git config,我试过

git config --global pager.stash false 

但这似乎并没有做的文件说什么(其实,我没有发现任何影响)。然后我试了

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

又没有任何明显的效果。

,配置文件会正确更新,例如

git config pager.stash 
false 

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

+0

你有任何其他寻呼机相关的配置?藏匿处不会为我使用寻呼机。 – Cascabel 2010-11-19 14:46:33

+0

Strike that:list子命令确实分页,并忽略配置。 – Cascabel 2010-11-19 14:58:21

+1

请参阅下面的答案:'git config --global pager.stash false'不工作是git 1.7.7.3及更高版本中修复的错误。 – cbowns 2012-02-03 01:30:12

回答

9

它看起来像藏匿处,任何其他非内建命令(写成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和重新调用饭桶。

另一个临时修复,因为它是一个shell脚本,将直接编辑0​​。只需要找到list_stash函数,并将--no-pager选项添加到git log的调用中,或者覆盖整个脚本,在顶部设置。

+0

感谢您提供的信息,并将其列入git邮件列表(我也在那里阅读您邮件的答案)。关于别名:我也尝试了一个不同于'藏'的名字,但效果是一样的。奇怪的是,我没有收到错误信息(版本1.7.2.3),所以我觉得这个名字不是原因。我现在只需要修改脚本。 – 2010-11-19 17:05:41

+1

@Sven:你实际上是否有不止一个屏幕的价值列表?或者,您的传呼机在少于一个输出屏幕后不会退出? – Cascabel 2010-11-19 17:19:56

+0

@Sven:我不确定你为什么没有得到那个错误。该检查很久以前就已添加(v1.5.3)。尽管如此,子shell别名('!...')也应该可以正常工作,并避免编辑git本身。 – Cascabel 2010-11-19 17:34:12

23

从1.7.7.3开始,git config --global pager.stash false完成了此操作。

7

另外,您可以配置less退出,如果有输出小于一个屏幕的价值:

export LESS='-F' 

或者冗长:

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

如果在您的git的输出有颜色,你”我可能也想通过-r标志:

export LESS='-F -r' 
+0

这个解决方案已经隐藏在Jefromi的回答(以某种方式)的评论中。尽管如此,自己的答案还是很好的。 – 2012-03-26 11:25:47

+3

这里不起作用(xterm在pts上),因为'less'退出之后,没有任何显示不足,它重绘了以前的提示。但它在tty1上的术语“linux”上起作用。 – lolesque 2012-04-18 15:46:40

+0

是的,在某些系统/终端输出消失,因为它全部进入“备用屏幕”,并立即切换回:-(增加'--no-init'可能有帮助 – 2017-11-13 11:37:17

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

是你的朋友。