Something not mentioned is
git log -S"pattern"
This is useful for searching diffs. If your repo is small this is quite fast. However for large repos, it can be slow which is why I use my own diffs indexer. Below is a screenshot of what my diffs search looks like.
http://screenshots.gitsense.com/diffs-search.html
For most people, git log -S should work fine but my solution is targeted for enterprise, which is why I went my own route.