2011-10-12 90 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