Git

阻止 Git 子模組 foreach 為每個模組打開 less

  • September 5, 2014

我偶爾需要通過我使用的 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

參考

引用自:https://unix.stackexchange.com/questions/73522