Search code examples
git

How to make git log not prompt to continue?


I have a couple of git repositories that belong together, and simple batch/bash file to loop over them. I often loop over them with a log command to quickly see what state they are in. This works nicely, except for one thing: if the commit message is longer than the number of characters my console is wide (or has multiple lines), git shows the line, then a newline with (END) and I have to press q to continue (I guess it pipes the output through more or something like that). Example:

> gitloop . "git log --decorate=short --pretty=oneline -n1"
18629ae238e9d5832cb3535ec88274173337a501 (HEAD, origin/master, master) short log

625fb891b9b0b8648459b07ace662ae3b7773c7f (HEAD, origin/master, origin/HEAD, master) short log

dc0838118266ba8570ea338c1faddfe8af0387bb (HEAD, origin/work, origin/master, work, master) oops loooooooooooooong log
-(END)

This is rather inconvenient as I have to press q a couple of time, whereas I'd just like to see all those oneliners in one go.

How can I disable this behaviour (preferrably while still keeping this log format)?


Solution

  • Git has an option to disable the pager:

    git --no-pager log --decorate=short --pretty=oneline -n1
    

    If your pager cuts lines and you want to retain that behaviour, either pipe to cut...

    git --no-pager log --decorate=short --pretty=oneline -n1 | cut -c 1-$COLUMNS
    

    ...or set the environment variable GIT_PAGER before the invocation:

    GIT_PAGER="cut -c 1-${COLUMNS-80}" git log --decorate=short --pretty=oneline -n1