28

私は通常、git でページャーを使用するのが好きですがgit stash、ページャーは私を悩ませます。を呼び出すときgit stash listに、ページャーに 3 行の出力が表示されるのは望ましくありません。qフォローアップgit stash popコマンドを入力するときに、出力を再度使用できないようにするためだけに押す必要があります。

1つの解決策は、使用することです

git --no-pager stash list

しかし、それはタイピングが多すぎます (私は怠け者です)。のmanページgit configに従って、試しました

git config --global pager.stash false

しかし、これはドキュメントが言うことをしていないようです (実際、私は何の効果も感じませんでした)。それから私は試しました

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

再び顕著な効果なし。

構成は適切に更新されます。たとえば、

git config pager.stash
false

効果がないだけです。私は何が欠けていますか?git stashそして、ページャーを使用しないでどうすれば達成できますか?

4

4 に答える 4

44

1.7.7.3 の時点で、これをgit config --global pager.stash false実現します。

于 2011-11-17T19:10:59.970 に答える
10

これは stash のように見え、その他の非組み込みコマンド (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ます。これにより、サブシェルが生成され、git が再起動されます。

これはシェルスクリプトであるため、別の一時的な修正はlibexec/git-core/git-stash直接編集することです。list_stash関数を見つけて、--no-pagerその呼び出しにオプションを追加するgit logか、スクリプト全体をカバーするにGIT_PAGER=catは、上部に設定します。

于 2010-11-19T14:57:04.947 に答える
7

lessまたは、出力が 1 画面分に満たない場合に終了するように構成することもできます。

export LESS='-F'

または、冗長に:

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

git 出力に色がある場合は、おそらく-rフラグも渡したいと思うでしょう:

export LESS='-F -r'
于 2012-03-26T09:19:15.840 に答える