Show non-merge differences for two commits in git
If your merges all came from the same branch (say master
) or are all contained in another branch, you can use the solution from this question.
Assuming you have a tree like the following:
x---y-+-z-+-branch
/ / /
---a---b---c-+-d-+-e---master
and the two commits you would like to compare are b
and branch
. Then instead of comparing the two commits directly, running
git diff master...branch
will show all changes done on the branch (x,y,z
) excluding everything that is also on master
(c,d,e
, the merges). Note that this also ignores any changes done on master that are not yet in the branch.
From the docs:
git diff [--options] commit...commit [--] […]
This form is to view the changes on the branch containing and up to the second commit, starting at a common ancestor of both commits. "git diff A...B" is equivalent to "git diff $(git-merge-base A B) B".
I didn't know the --no-merges -o options but here another solution (I suppose that merges have been done from master) :
git checkout -b temp
git rebase --onto master branch-start branch-end
git diff master
Your question is slightly ambiguous but I think you want this.
git log --no-merges -p branch-start..branch-end