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?
You can use the git merge-base command to find the latest common commit between the two branches. If that commit is the same as your branch head, then the branch has been completely merged.
Under your repository name, click Pull requests. In the "Pull Requests" list, click the pull request you'd like to merge. Depending on the merge options enabled for your repository, you can: Merge all of the commits into the base branch by clicking Merge pull request.
I use the following script:
git log --merges --first-parent master \ --pretty=format:"%h %<(10,trunc)%aN %C(white)%<(15)%ar%Creset %C(red bold)%<(15)%D%Creset %s"
Explaining each argument:
--merges
: only "merge" commits (more than 1 parent);--first-parent master
: only merges applied to master
. This removes the entries where someone merged master
into their branches;--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:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With