35

The pager less doesn't clear the screen as it should do when i use git.

I use less all the time and it usually doesn't leave output in the terminal after quit but when less gets executed via git it leaves the output in the terminal. I'm 100% sure git uses less on my system.

What is wrong with git and how do i fix it? pager = less in ~/.gitconfig doesn't help. $PAGER is also set to less.

Kalle Richter
  • 2,212
  • 5
  • 40
  • 60
ggustafsson
  • 1,964
  • 15
  • 20
  • To clarify, git doesn't clear the screen *by default*, there is nothing wrong with your git. Use @ggustafsson's answer to change the default behaviour. – LeartS Nov 06 '14 at 10:25

2 Answers2

40

The solution is to set the variable LESS. Git defaults to less FRSX.

export LESS=R

Alternatively, you can modify the variable LESS when pager is called:

git config --global core.pager 'less -+$LESS -R'

See the core.pager section in man git-config

CharlesB
  • 563
  • 9
  • 20
ggustafsson
  • 1,964
  • 15
  • 20
  • 3
    Removing only X option is sufficient, the option is for preventing restoring the terminal according to the manual of less(1). – xuchunyang Oct 26 '16 at 08:26
13

To clear the screen, but leave other behaviors untouched, you can do

git config --global core.pager 'less -+X'

This disables the -X option for less.

Dan
  • 231
  • 2
  • 5
  • 3
    You would also want to disable the 'F' flag, since less will automatically close if the buffer is small, leading you to believe that there is no output. So the command should be `git config --global core.pager 'less -+X -+F'`. – Steve Sep 16 '18 at 23:09