Git サブモジュール foreach が各モジュールに対して less を開かないようにする

Git サブモジュール foreach が各モジュールに対して less を開かないようにする

時々、次のような git サブモジュールを grep で検索する必要があります。

git submodule foreach 'git grep x'

しかし、zsh に切り替えてから、オプションがない場合でもサブモジュールごとに less プロンプトが開かれるようになりました。出力がすべてターミナルに印刷される方がずっと望ましいです。

私の現在の解決策は、次の電話に電話することです:

git submodule foreach 'git grep x' > /tmp/a && cat /tmp/a

これは私が望んでいることを実現しますが、オプションやよりエレガントなソリューションが欠けているような気がしてなりません。何かありますか?

答え1

Git が使用するページャーを変更してみてください:

GIT_PAGER="cat" git submodule foreach 'git grep x'

または、出力が画面からはみ出す場合にのみ、使用量を減らしたい場合は、次のようにします。

GIT_PAGER="less -FX" git submodule foreach 'git grep x'

を使用してプロジェクトごとにページャーを設定することgit configも、もちろん環境変数をグローバルに設定することもできます。

答え2

他の方法についても説明します。

方法 1:--nopager

git submodule foreach 'git --nopager grep x'

方法2: ポケベルを完全に無効にする

git config --global core.pager cat

git-config のマニュアルページから:

core.pager git が出力をページ分割するために使用するコマンド。GIT_PAGER 環境変数で上書きできます。git は、ページャーの実行時に LESS 環境変数が設定されていない場合は、それを FRSX に設定することに注意してください。LESS 変数を他の値に設定することで、これらの設定を変更できます。あるいは、core.pager オプションを設定することで、プロジェクトまたはグローバル ベースでこれらの設定を上書きできます。core.pager を設定しても、上記の LESS 環境変数の動作には影響がないため、この方法で git のデフォルト設定を上書きする場合は、明示的に指定する必要があります。たとえば、下位互換性を保つために S オプションを無効にするには、core.pager を less -+S に設定します。これは git によってシェルに渡され、最終コマンドは LESS=FRSX less -+S に変換されます。

方法3:pager.<cmd>

core.pager の代わりに pager.setting を使用して、単一の git サブコマンドのページングを無効にすることもできます。また、git リポジトリごとに設定を変更することもできます (--global を省略)。

git config --global pager.grep cat

git-config のマニュアルページから:

ページャー。値がブール値の場合、tty に書き込むときに特定の git サブコマンドの出力のページ区切りをオンまたはオフにします。それ以外の場合は、pager の値で指定されたページャを使用してサブコマンドのページ区切りをオンにします。コマンドラインで --paginate または --no-pager が指定されている場合は、このオプションよりも優先されます。すべてのコマンドのページ区切りを無効にするには、core.pager または GIT_PAGER を cat に設定します。

方法4: lessの動作を変更する ( -F -X)

less を再設定して、画面サイズより大きいコンテンツを持つファイルのみを「条件付きで」ページングするようにしたり ( -F)、その後 less が画面をクリアしないように無効にしたりすることができます ( X)。

git config --global core.pager less -F -X

参考文献

答え3

この場合、コマンド全体を再ページングしていました

git submodule ... | less

ただし、サブコマンドからの潜在的な書式設定は失われます。

その後、「git status」でも同じ問題があることに気づいたので、「git ステータスの出力にページャーをオンにするにはどうすればよいですか?「私は提案します

git config --global pager.submodule "less -FX"

関連情報