Why do I have to hit 'Q' at the end of 'git log'?

Git

Git Problem Overview


Consider:

git log -n 20 --pretty=oneline

I am telling Git that I need to see only the last 20 commits. I hate to hit Q to get rid of END. Is there a way out so that I don't have to hit Q?

Git Solutions


Solution 1 - Git

Git is automatically paging the output for you, since logs tend to easily overflow a single terminal window size (you're in one of the rare exceptions - a oneline format and a small commit limit). If you don't want this, use:

git --no-pager log -n 20 --pretty=oneline

Note that this does mean you'll get some ugly wrapping, because the pager was previously turning off wrapping for you (since you could use the cursor keys to scroll left-right).

Solution 2 - Git

You can "turn off" git paging by telling it to use cat instead of less. Thereafter, pipe the output through less when you do want paging, or head if you just want to see the top, etc.

git config --global core.pager cat

I turn off automatic paging because I often run git from within emacs, which neither needs nor plays well with less.

Solution 3 - Git

less accepts -F argument to quit automatically if content fits on one screen

Solution 4 - Git

git log -n 20 --pretty=oneline | cat

is a little shorter that the --no-pager option but will also remove any colours present.

Solution 5 - Git

If you want to use --no-pager in an alias, set up your alias this way:

hist = !git --no-pager log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short

Solution 6 - Git

The q is used to close the command line program used to view the logs...

You can use another log viewer, like gitk:

gitk -n 20

Solution 7 - Git

Alias for a log command where you don't have to click q to to make it go away:

git config --global alias.hist '!git --no-pager log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short --max-count=10'

Solution 8 - Git

If short is what you want, -P is a synonym for --no-pager which turns off pagination.

Some fun examples:

    git --no-pager log --pretty=oneline -10  # summarize last 10 commits
    git -P log --pretty=oneline -10          # same!

    git -P log -1 -c    # show diffs for last commmit
    git -P log -1 -U1   # unified diffs w/ 1 line of context

    git -P log -1 --name-only  # print commit + names of changed files

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionNick VanderbiltView Question on Stackoverflow
Solution 1 - GitCascabelView Answer on Stackoverflow
Solution 2 - GitWayne ConradView Answer on Stackoverflow
Solution 3 - GithasenView Answer on Stackoverflow
Solution 4 - GitDebilskiView Answer on Stackoverflow
Solution 5 - GitAleksandr ZonovView Answer on Stackoverflow
Solution 6 - GitAhmed KotbView Answer on Stackoverflow
Solution 7 - GitPylinuxView Answer on Stackoverflow
Solution 8 - GitTom HundtView Answer on Stackoverflow