Using Git, show all commits that exist *only* on one specific branch, and not *any* others
We just found this elegant solution
git log --first-parent --no-merges
In your example of course the initial commit still shows up.
this answer does not exactly answer the question, because the initial commit still shows up. On the other hand many people coming here seem to find the answer they are looking for.
Courtesy of my dear friend Redmumba:
git log --no-merges origin/merge-only \
--not $(git for-each-ref --format="%(refname)" refs/remotes/origin |
grep -Fv refs/remotes/origin/merge-only)
...where origin/merge-only
is your remote merge-only branch name. If working on a local-only git repo, substitute refs/remotes/origin
with refs/heads
, and substitute remote branch name origin/merge-only
with local branch name merge-only
, i.e.:
git log --no-merges merge-only \
--not $(git for-each-ref --format="%(refname)" refs/heads |
grep -Fv refs/heads/merge-only)