2011-10-12 77 views
39

我有几个git存储库,属于一起,并简单的批处理/ bash文件来循环它们。我经常使用log命令循环它们以快速查看它们处于什么状态。除了一件事:除了一个事情:如果提交消息比我的控制台宽(或有多行)的字符数多,git显示行,然后换行符(END),我必须按q继续(我想它通过管道输出更多或类似的东西)。 例子:如何让git log不提示继续?

> gitloop . "git log --decorate=short --pretty=oneline -n1" 
18629ae238e9d5832cb3535ec88274173337a501 (HEAD, origin/master, master) short log 

625fb891b9b0b8648459b07ace662ae3b7773c7f (HEAD, origin/master, origin/HEAD, master) short log 

dc0838118266ba8570ea338c1faddfe8af0387bb (HEAD, origin/work, origin/master, work, master) oops loooooooooooooong log 
-(END) 

这是相当不方便,因为我必须按q一对夫妇的时候,而我只是想看到一个全力以赴的oneliners。

如何禁用此行为(最好仍保持此日志格式)?

+1

可能重复的[为什么我必须在git日志结尾打q](http://stackoverflow.com/questions/2364978/why-do-i-have-to-hit-q git-log-end-of-git-log) – Sgoettschkes

回答

71

Git有一个选项来禁用寻呼机:

git --no-pager log --decorate=short --pretty=oneline -n1 

如果您的寻呼机切割线,你想这种行为,无论是管保留cut ...

git --no-pager log --decorate=short --pretty=oneline -n1 | cut -c 1-$COLUMNS 

...或在调用之前设置环境变量GIT_PAGER

GIT_PAGER="cut -c 1-${COLUMNS-80}" git --no-pager log --decorate=short --pretty=oneline -n1 
+0

有没有办法让'--no-pager'成为默认的,或者在需要的时候使用这个选项的快捷方式更好? 我想'gitnp'到'git --no-pager',但我认为有更好的解决方案。 –

+1

@IslamAzab,你可以将'git'别名为'/ usr/bin/git --no-pager',这将禁止所有你的git调用的寻呼机。 – mrkmg

+0

@WarrenP'git'没有内置寻呼机。相反,它遵循Unix哲学并使用'$ PAGER'中的任何内容。 'git'总是使用'$ PAGER',而不是像许多其他写得不好的工具那样只是随机地做。唯一的魔法'git'有,如果'$ LESS'是*未定义的*,它将定义'$ LESS'来给'FRX'赋值。有关更多详细信息,请参阅https://github.com/git/git/blob/master/Documentation/config.txt#L766。 –

0

You pip如果--no-pager不适用于您,它会减少-F。

git log --decorate --oneline -5 | less -F