In our workflow, no "direct" commits are made into the master branch. The master branch only receives merges from Pull Requests.
We can think of each merge then as a new feature added to the master branch.
So I'd like to get a list of merges into master, as a way to visualize the blocks of features added into the product over time.
Does git or the Github API expose this query, or do I have to parse raw commits?
I use the following script:
git log main --first-parent --merges \
--pretty=format:"%h %<(10,trunc)%aN %C(white)%<(15)%ar%Creset %C(red bold)%<(15)%D%Creset %s"
Explaining each argument:
main
: the name of your main branch. Can be omitted, in which case the current branch will be used.--first-parent
: skips commits from merged branches. This removes the entries where someone merged master
into their branches.--merges
: shows only "merge commits" (commits with more than 1 parent). Omit this argument if you want to see direct commits to your main branch.--pretty-format
: applies the following formatting:
%h
: the commit short hash;%<(10,trunc)%aN
: author name, truncated at 10 chars;%<(15)%ar
: the relative commit time, padded to 15 chars;%<(15)%D
: the tag names, also padded to 15 chars;%s
: first line of the commit message.The result is pretty satisfying: