Git

當從 Bash 和 Git 呼叫時,less 的執行方式不同

  • September 16, 2018

當我查看一個大的差異時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

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