2011-10-12 1 views
39

私は一緒に属しているgitリポジトリをいくつか持っていて、単純なバッチ/ bashファイルを持っています。私はしばしばログコマンドでそれらをループして、どの状態にあるのかを素早く確認します。これはうまくいきます。コミットメッセージがコンソールの幅よりも長い場合(または複数の行がある場合)、git (END)と改行を表示して、qを続行する必要があります(出力は以上、など)。 例:私はちょうど一度にすべてのそれらのonelinersを見たいのに対し、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) 

これはかなり不便です。

この動作を無効にするにはどうすればいいですか(このログ形式を維持しながら)。

+1

[なぜgitログの最後にqを押す必要がありますか?](http://stackoverflow.com/questions/2364978/why-do-i-have-to-hit-q -git-log-end-of-git-log) – Sgoettschkes

答えて

71

Gitはページャを無効にするオプションがあります... cut

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

をあなたのポケットベルカットライン場合

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

し、その動作を維持したい、どちらかのパイプ...あなたがピップ

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

'--no-pager'をデフォルトにする方法や、必要に応じてこのオプションのショートカットを改善する方法はありますか? 'git --no-pager 'に' gitnp'のエイリアシングを考えましたが、もっと良い解決策があると思います。 –

+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

:または呼び出しの前に、環境変数を設定しGIT_PAGERそれより少ない場合は-Fはあなたのために働かない。