Is there a quick way to "git diff" from the point or branch origin?

user776686 picture user776686 · Apr 23, 2015 · Viewed 26.3k times · Source

I have looked at various SO answers on using git diff and git revisions (HEAD, ORIG_HEAD, FETCH_HEAD, etc.) and I still haven't found an easy way to list the changes have been made since the beginning of the local branch, or since last rebase.

By easy I mean without having to look up and paste commit SHA or having to count how many commits I want to look back.

git diff origin/master is close, but it refers to remote which may have diverged since I checked out new branch from it.

I would expect something like git diff BASE_HEAD to be available.

...unless there's already a way to do that. Does anyone have the answer?

Answer

frasertweedale picture frasertweedale · Apr 23, 2015

You can find the branch point using git merge-base. Consider master the mainline and dev the branch whose history you are interested in. To find the point at which dev was branched from master, run:

git merge-base --fork-point master dev

We can now diff dev against this basis:

git diff $(git merge-base --fork-point master dev)..dev

If dev is the current branch this simplifies to:

git diff $(git merge-base --fork-point master)

For more information see the git-merge-base documentation.