How to make git diff write to stdout?
By default, Git sends its diff output (and generally any output that may be more than a screenful) to the system's pager, which is a utility that prints only one screenful of output at a time. If you want to disable the pager when you run a command, pass --no-pager
to Git:
$ git --no-pager <subcommand> <options>
This can be run for any Git command.
If you want to disable it by default for diff only, you can set the diff pager to cat
by running:
$ git config pager.diff false
If you want to disable it by default for all commands, you can set the Git pager to cat
by running:
$ git config --global core.pager cat
The following core.pager
value uses less
, which prints to stdout, and also has pager functionality (if required), enabling scrolling up and down (unlike cat
):
$ git config --global core.pager "less -FRSX"
It immediately quits if the diff fits on the first screen (-F
), outputs raw control characters (-R
), chops long lines rather than wrapping (-S
), and does not use termcap init/deinit strings (-X
).
You can also simply use cat
for any git
command if you don't care about the colors.
So git diff | cat
for your case.
Edit: as pointed out in the comments if you do care about the colors use:
git diff --color | cat