How can I generate a git diff of what's changed since the last time I pulled?

Teflon Ted picture Teflon Ted · Sep 14, 2008 · Viewed 47.6k times · Source

I'd like to script, preferably in rake, the following actions into a single command:

  1. Get the version of my local git repository.
  2. Git pull the latest code.
  3. Git diff from the version I extracted in step #1 to what is now in my local repository.

In other words, I want to get the latest code form the central repository and immediately generate a diff of what's changed since the last time I pulled.

Answer

Lily Ballard picture Lily Ballard · Sep 15, 2008

You could do this fairly simply with refspecs.

git pull origin
git diff @{1}..

That will give you a diff of the current branch as it existed before and after the pull. Note that if the pull doesn't actually update the current branch, the diff will give you the wrong results. Another option is to explicitly record the current version:

current=`git rev-parse HEAD`
git pull origin
git diff $current..

I personally use an alias that simply shows me a log, in reverse order (i.e. oldest to newest), sans merges, of all the commits since my last pull. I run this every time my pull updates the branch:

git config --global alias.lcrev 'log --reverse --no-merges --stat @{1}..