244

I recently learned that I can get hg log to print the history in reverse order with:

hg log -r :

So of course I tried:

git log -r :

Well, it didn't work. So what is the command to do the same thing in git?

Jacek Laskowski
  • 72,696
  • 27
  • 242
  • 420
Erik B
  • 40,889
  • 25
  • 119
  • 135

7 Answers7

455

Use the --reverse option:

git log --reverse
tshepang
  • 12,111
  • 21
  • 91
  • 136
Makis
  • 12,468
  • 10
  • 62
  • 71
16

You don't need to type --reverse all the time, nor do you need a bash function. You can just create a git alias. Open up your favorite text editor and open up your global .gitconfig file. It's usually found in your home directory.

Navigate to or create a section like this:

[alias]
    lg = log -10 --reverse

That creates a git alias that grabs the ten most recent commits then reverses that list so the most recent of those 10 is at the bottom. Now you can simply run:

git lg

CatDadCode
  • 58,507
  • 61
  • 212
  • 318
12

Jakub Narębski's comment ("Note that e.g. git log -10 --reverse would get 10 last commits then reverse list") has been clarified in Git 2.11 (Q4 2016):

See commit 04be694 (27 Sep 2016) by Pranit Bauva (pranitbauva1997).
(Merged by Junio C Hamano -- gitster -- in commit 54a9f14, 11 Oct 2016)

rev-list-options: clarify the usage of --reverse

Users often wonder if the oldest or the newest n commits are shown by log -n --reverse.
Clarify that --reverse kicks in only after deciding which commits are to be shown to unconfuse them.

See Commit Limiting.

Community
  • 1
  • 1
VonC
  • 1,262,500
  • 529
  • 4,410
  • 5,250
2

If you want a git --graph with reversed order, you can't make use of --reverse unfortunately, but you can make use of tac:

git log --graph --color | tac

Note that --color is important here.

As a git alias:

git config --global alias.logr '!git log --graph --color | tac'

(Then of course add your favorite flags to git log --graph ;)

lajarre
  • 4,910
  • 6
  • 42
  • 69
1

I combined few of suggested one into one and I created an alias.

git log -10 --pretty=oneline --abbrev-commit --reverse
alias gl='git log -10 --pretty=oneline --abbrev-commit --reverse'
wojcieh
  • 312
  • 1
  • 8
1

None of above work... except this one with recent commit message + stats

git log --graph --stat

More snippet ~/.gitconfig:

lg1 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
lg2 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n''          %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all
lg = !"git lg1"
lg3 = log -10 --reverse --abbrev-commit
CodeFarmer
  • 2,644
  • 1
  • 23
  • 32
  • When using `--graph` you can't get results in reverse order out of the box, as git doesn't allow `--reverse` on top of `--graph`. See my answer for a solution – lajarre May 31 '22 at 10:13
0

You could create a bashrc function (assuming you are on a unixy os)

function git_logr {

    git log --reverse

}
CatDadCode
  • 58,507
  • 61
  • 212
  • 318
Adil Khan
  • 63
  • 3
  • 6
    Easier approach would be to add an alias for something this simple: `git config --global alias.logr 'log --reverse'` Invoke using: git logr – mhand Dec 14 '16 at 21:10