Is it possible to get a list of merges into a branch from the Github website OR API?
branching-and-merging, git, github, github-api
Solution
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:
Problem
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?