When the
LESS
environment variable is unset, Git sets it toFRX
(ifLESS
environment variable is set, Git does not change it at all).
A opção -X
( --no-init
) é responsável por não limpar o terminal após a saída de less
.
Quando vejo um grande diff com git diff
, ele é paginado com less
. Isso é confirmado abrindo outra janela e verificando dados de ps -aux
e /proc
.
No entanto, quando less
é invocado pelo Git, ele não reverte o conteúdo do terminal para seu estado anterior depois de atingir q
(o conteúdo do diff permanece no terminal). Mas quando eu faço
git diff commit1 commit2 --color | less -R
e sai do less
com uma chave q
, o conteúdo desaparece e o terminal volta ao estado anterior.
Mais interessante, se eu fizer isso
export PAGER=less LESS='-R'
e invocar git diff
(ou qualquer outro comando que chame um pager), less
se comporta da mesma forma como se invocado diretamente do shell Bash.
Aqui está uma breve captura de tela descrevendo minha pergunta. No painel esquerdo, o comando é executado da seguinte forma:
unset PAGER GIT_PAGER LESS
git diff HEAD^ HEAD
No painel direito, você vê os comandos. O commit mais recente foi de mais de 100 linhas de y
gravadas em um arquivo. Nos dois painéis less
é encerrado com a chave q
.
Alguém pode me dizer o que é diferente e explicar por quê?
When the
LESS
environment variable is unset, Git sets it toFRX
(ifLESS
environment variable is set, Git does not change it at all).
A opção -X
( --no-init
) é responsável por não limpar o terminal após a saída de less
.