"Philip Oakley" [off-list ref] writes:
The user question was, given a commit 'J', and a future commit 'H'
(typically a branch tip such as 'master'), find those commits that are
:
A) merges
B) on the first parent DAG chain of the future commit 'H'
C) children of the given commit 'J'
The answer then is that there is no such single step operation.
In the picture, if D or E were a merge from a side branch that does
not have anything to do with 'J', "log --first-parent --merges" will
not exclude it (i.e. C won't be fulfilled by --first-parent --merges).