Looking at diffs on the command-line is cute and all, but for anything substantial I doubt this will ever be as good as using a proper GUI interface. I like "meld". You have to install it, then run
git config --global alias.meld '!git difftool -t meld --dir-diff'
and after that you can do: git meld # like "git diff"
git meld --staged # like "git diff --staged"
git meld branchA branchB # like "git diff branchA branchB"