I like having the pager enabled for git log for example, but not git diff because I have my own visual diff tool that comes up, and I hate having to hit 'q' at the command line after the diff is done with. Is there a way to do this?
3 Answers
You can set the pager.diff configuration variable to disable the pager for specific subcommands. See pager.<cmd> in git-config(1).
git config --global pager.diff falseLeave out --global if you only want to make this configuration change for the current repository.
Just add | cat to the end of your git call. This will trick git into dumping the whole thing as standard output (because no longer interactive).
e.g.
git diff --stat | catSadly, you'll lose the color in your output, as a side-effect, but you can force it on by adding --color before the | cat, yielding:
git diff --stat --color | cat Not a great solution, but you could have a git wrapper which determines what command you are running and pipes the output through cat to eliminate the terminal detection.
#!/bin/sh
case "$1" in) diff) git "$@" | cat;; *) exec git "$@";;
esacOf course my example program is entirely braindead. You would need to skip over options instead of hard-coding "$1" in the program.