Git當從 Bash 和 Git 呼叫時,
當從 Bash 和 Git 呼叫時,less
的執行方式不同
當我查看一個大的差異時
git diff
,它會被分頁less
。這可以通過打開另一個視窗並檢查來自ps -aux
和的數據來確認/proc
。但是,當
less
被 Git 呼叫時,它不會在點擊後將終端內容恢復到之前的狀態q
(差異內容保留在終端中)。但是當我這樣做時git diff commit1 commit2 --color | less -R
less
並用 key退出q
,內容消失,終端恢復到之前的狀態。更有趣的是,如果我這樣做
export PAGER=less LESS='-R'
和呼叫
git diff
(或任何其他呼叫尋呼機的命令)的less
行為與直接從 Bash shell 呼叫相同。這是描述我的問題的簡短螢幕截圖。在左側窗格中,命令執行如下:
unset PAGER GIT_PAGER LESS git diff HEAD^ HEAD
在右側窗格中,您可以看到命令。最新送出是 100 多行
y
寫入文件。在兩個窗格上less
都使用 key 退出q
。誰能告訴我有什麼不同並解釋為什麼?
文件:
當
LESS
環境變數未設置時,Git 將其設置為FRX
(如果設置了LESS
環境變數,Git 根本不會更改它)。(
-X
)--no-init
選項負責退出後不清除終端less
。