I want to see the difference between the master branch and my feature branch. I have many pulls from the master to my feature branch and want to see the changes that would be added if I merged my feature into the master.
This is my situation:
-*--*--*-----*<master>
\ \ \
1--*--*--*--2--*<feature>
My problem is the git diff master feature
seems to only display commit number 2. I want to see the diff that a github pull request would show, which I believe is all the way to commit 1.
I noticed git cherry
shows me the commits I want to see the difference for.
Thanks for any advice.
The important thing to realize about git diff A B
is that it only ever shows you the difference between the states of the tree between exactly two points in the commit graph - it doesn't care about the history. The ..
and ...
notations used for git diff
have the following meanings:
So when you run git diff master feature
that's not just showing you the change introduced by the commit you've marked as 2
- the output should show the exact differences between the state of the tree commited in master
and the state of the tree commited in feature
. If it's not showing you the earlier changes on your feature branch, perhaps you resolved conflicts from the earlier merges from master in favour of the version in master
?
As cebewee says it may be that what you want is git log -p master..feature
, since git log
does care about history. The meaning of ..
and ...
for git log
are different since they select a range of commits:
Incidentally, its often said that merging from master
into a topic branch is the wrong thing to do - instead you should be rebasing, or merging your topic branch into master
after it is complete. This keeps the meaning of the topic branch easily understood. The git maintainer did a (somewhat difficult to understand) blog post about the philosophy of merging which discusses that.