阻止 Git 子模組 foreach 為每個模組打開 less
我偶爾需要通過我使用的 git 子模組 grep:
git submodule foreach 'git grep x'
但是,由於切換到 zsh,我發現每個子模組都打開了一個較少的提示,即使沒有選項也是如此。我更喜歡將所有輸出列印到終端。
我目前的解決方案是致電:
git submodule foreach 'git grep x' > /tmp/a && cat /tmp/a
這實現了我想要的,但我不禁覺得我缺少一個選項或更優雅的解決方案。有嗎?
嘗試更改 git 使用的尋呼機:
GIT_PAGER="cat" git submodule foreach 'git grep x'
或者,如果您希望減少使用,但僅當輸出將超出螢幕時:
GIT_PAGER="less -FX" git submodule foreach 'git grep x'
您可以使用 設置每個項目的尋呼機
git config
,當然也可以全域設置環境變數。
只是為了涵蓋其他方法:
方法#1:
--nopager
git submodule foreach 'git --nopager grep x'
方法#2:完全禁用尋呼機
git config --global core.pager cat
從 git-config 手冊頁:
core.pager git 用來對輸出進行分頁的命令。可以用 GIT_PAGER 環境變數覆蓋。請注意,如果在執行尋呼機時未設置 LESS 環境變數,則 git 會將其設置為 FRSX。可以通過將 LESS 變數設置為其他值來更改這些設置。或者,可以通過設置 core.pager 選項在項目或全域基礎上覆蓋這些設置。設置 core.pager 對上面的 LESS 環境變數行為沒有影響,所以如果你想用這種方式覆蓋 git 的預設設置,你需要顯式。例如,要以向後兼容的方式禁用 S 選項,請將 core.pager 設置為 less -+S。這將由 git 傳遞給 shell,它將最終命令轉換為 LESS=FRSX less -+S。
方法#3:
pager.<cmd>
您還可以使用分頁器禁用單個 git 子命令的分頁。設置而不是 core.pager,您可以更改每個 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
參考