Published 2023-03-12.
Time to read: 2 minutes.
git
collection.
By default, the git
commands that might generate lots of output use a pager,
so you can scroll through voluminous output easily.
These commands include:
git branch -l
git config --list
git diff
git log
- Help output
The default pager is
less
.
To exit from less
,
you must press the q key, which is confusing for some people.
You can specify any shell command to use as the git
pager.
Many options exist for controlling the git
pager.
I prefer to use the last method shown.
Pipes Do Not Use a Pager
A pager is never used if you pipe the git
output to another process, or into a file.
$ git -P log > my_log.txt
$ git -P diff | grep 'pattern'
Control One Git Command
To control the git
pager for just one git
command,
you have 2 options:
Disable With -P
Pass the -P
option to git
, before the subcommand, like this:
$ git -P log ... lots of output...
$ git -P diff ... lots of output...
Define GIT_PAGER Inline
Control the pager by definoing the GIT_PAGER
environment variable inline (before the command).
To disable the pager for the output of the current command only,
set GIT_PAGER=cat
, like this:
$ GIT_PAGER=cat git log ... lots of output...
$ GIT_PAGER=cat git diff ... lots of output...
To use a pager only if the output of the current command is longer than one terminal screen,
set GIT_PAGER="less -F"
, like this:
$ GIT_PAGER="less -F" git log ... lots of output...
$ GIT_PAGER="less -F" git diff ... lots of output...
Control Current Shell or Script
To disable the pager for all git
commands in the current shell or script,
define GIT_PAGER=cat
on a separate line, like this:
$ export GIT_PAGER=cat
$ git branch -l ... lots of output...
$ git log ... lots of output...
To use a pager only if the output of the current command is longer than one terminal screen in the current shell or script,
define GIT_PAGER="less -F"
on a separate line, like this:
$ export GIT_PAGER="less -F"
$ git branch -l ... lots of output...
$ git log ... lots of output...
Control Current Project
These methods only affects the copy of the git repository that you are working on; other clones of the repository are not affected.
To permanently configure git
to never use a pager for the current git
project,
configure this project’s configuration for core.pager
to have value "cat"
.
$ git config core.pager "cat"
$ git branch -l ... lots of output...
$ git log ... lots of output...
To configure git
to always use a pager if the output of a git command is
longer than one terminal screen in the current project,
configure this project’s configuration for core.pager
to have value
"less -F"
, like this:
$ git config core.pager "less -F"
$ git branch -l ... lots of output...
$ git log ... lots of output...
Global Control
This method only affects the git
repositories that your OS userid works on;
other users are not affected.
You can permanently configure git
to never use a pager for any of your git
projects.
$ git config --global core.pager "cat"
$ git branch -l ... lots of output...
$ git log ... lots of output...
My Favorite
To permanently configure git
to only use a pager if the output of any git
command is
longer than one terminal screen in any project,
configure the global setting of core.pager
to have value "less -F"
, like this:
$ git config --global core.pager "less -F"
$ git branch -l ... lots of output...
$ git log ... lots of output...