web-dev-qa-db-ja.com

Git Windowsコマンドプロンプトが(END)でGitコマンドの実行中にスタックする

Git for Windowsセットアップ(msysgit)を入手しましたが、過去数日間は問題なく動作していましたが、今日、奇妙なエラーが発生しました。

WindowsコマンドプロンプトまたはmsysgitにバンドルされているGit BashでGitコマンドを発行すると、奇妙な「(END)」行​​が表示され、他のコマンドを発行できません。

alt text

この時点で、システムのビープ音だけが聞こえます。

何か案は?

ありがとう、P。

48
paperclip

Gitは、複数の情報画面を表示したいので、標準のUNIXページャープログラムlessを呼び出します。入力するだけ q 出力でナビゲートする必要がなくなったときにプロンプ​​トに戻ります。

  • j 1行下に移動
  • k 1行上に移動
  • <space> 1ページ下に移動
  • b 1ページ上に移動
  • h ヘルプを表示

Gitを効率的に使用したい場合は、基本的なUNIXツールを学ぶ必要があります。 gitがWindows上でビルドして実行されたとしても、プラットフォーム上ではほとんどエイリアンソフトウェアです。

lessが不要な場合は、構成内の別のポケットベルに置き換えてください。ページャーがまったく不要な場合は、catを使用します。

git config --global --add core.pager cat
82

押す qpager (デフォルトではgitの less )を終了します。

12
Skilldrick

私が最初にこの問題に遭遇したのは、同じものを探していたときです。 logコマンドを終了する必要はありません。それ以来、私は気に入った答えを見つけました。元の質問のかなり後でも、この答えを追加して、自分の検索ではすぐに見つけられなかった追加のソリューションを提供します。

なぜ(END)が存在します-結果は、別のページャー用に構成できるページャーを介してパイプ処理されます。

ただし、まったく停止したくない場合もあります。制限を行う他のオプションを指定したからです。私はこれのためにそれを見つけました gitにはグローバルオプションがあります--no-pager設定ファイルで定義されているポケットベルをすべてオフにします。

このグローバルオプションはgitコマンド自体にあり、すべてのサブコマンドで使用でき、次のようにサブコマンドの前に配置されます。

git --no-pager log
9
David Culp

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で私が観察した動作ではありません。)

2
Colin D Bennett