You can achieve something close (on small repos, more on that later) with: $ git log --graph --color \ --format='%C(auto)changeset: %h:%H%nuser: %an%ndate: %ad%nsummary: %s%n' \ | git name-rev --refs=$(git rev-parse --abbrev-ref HEAD) --name-only --stdin * changeset: 5fa0f52:master | user: Junio C Hamano | date: Fri Aug 16 10:28:23 2019 -0700 | summary: Git 2.23 | * changeset: 8e0fa0e:master~1 |\ user: Junio C Hamano | | date: Fri Aug 16 10:22:51 2019 -0700 | | summary: Merge tag 'l10n-2.23.0-rnd2' of git://github.com/git-l10n/git-po | | | * changeset: a6cd2cc:master~1^2 | | user: Jiang Xin | | date: Tue Jul 30 10:02:22 2019 +0800 | | summary: l10n: zh_CN: for git v2.23.0 l10n round 1~2 And in this case, since we are using HEAD to describe the commits by using --refs=$(git rev-parse --abbrev-ref HEAD), you can refer to a6cd2cc either as master~1^2 or HEAD~1^2. Now, git-name-rev has some memory/performance problems in repos with a high number of references. Alban Gruin was working on this issue[1], but I don't know what's the status of it. [1]:https://github.com/agrn/git/tree/ag/fix-name-rev-leak