Git for Windowsセットアップ(msysgit)を入手しましたが、過去数日間は問題なく動作していましたが、今日、奇妙なエラーが発生しました。
WindowsコマンドプロンプトまたはmsysgitにバンドルされているGit BashでGitコマンドを発行すると、奇妙な「(END)」行が表示され、他のコマンドを発行できません。
この時点で、システムのビープ音だけが聞こえます。
何か案は?
ありがとう、P。
Gitは、複数の情報画面を表示したいので、標準のUNIXページャープログラムless
を呼び出します。入力するだけ q 出力でナビゲートする必要がなくなったときにプロンプトに戻ります。
Gitを効率的に使用したい場合は、基本的なUNIXツールを学ぶ必要があります。 gitがWindows上でビルドして実行されたとしても、プラットフォーム上ではほとんどエイリアンソフトウェアです。
less
が不要な場合は、構成内の別のポケットベルに置き換えてください。ページャーがまったく不要な場合は、cat
を使用します。
git config --global --add core.pager cat
私が最初にこの問題に遭遇したのは、同じものを探していたときです。 logコマンドを終了する必要はありません。それ以来、私は気に入った答えを見つけました。元の質問のかなり後でも、この答えを追加して、自分の検索ではすぐに見つけられなかった追加のソリューションを提供します。
なぜ(END)
が存在します-結果は、別のページャー用に構成できるページャーを介してパイプ処理されます。
ただし、まったく停止したくない場合もあります。制限を行う他のオプションを指定したからです。私はこれのためにそれを見つけました gitにはグローバルオプションがあります--no-pager
設定ファイルで定義されているポケットベルをすべてオフにします。
このグローバルオプションはgit
コマンド自体にあり、すべてのサブコマンドで使用でき、次のようにサブコマンドの前に配置されます。
git --no-pager log
Gitはless
と呼ばれる「ページャー」を使用しています。これにより、大量のプログラム出力を簡単にスクロールできます。ただし、Git for Windowsのデフォルト設定は出力の画面が1つ未満の場合でもページャーを実行し続けるのようです。
ここに私が以前に持っていたデフォルト設定があります。これは常に(END)
を表示し、q
を押すのを待ってからプロンプトに戻ります:
$ git config --get core.pager
less -+F
オプションを-F
ではなく-+F
に変更することで、出力が1画面以上ある場合にのみless
が実行を継続する(そしてキーボードを制御する)ように動作を変更できます。
厄介なページャーを修正する
$ git config --global core.pager "less -F"
(以下の-+X
オプションの構文は、-X
オプションを「デフォルト」にリセットするように文書化されていますが、オプションを完全に削除すると-+F
ではなく-F
と同等だったため、-+F
で私が観察した動作ではありません。)