Git-reset: three simple rules that capture most of its (complicated) behaviour
blog.plover.com
blog.plover.com
I printed out the get/reset diagram and referred to it a lot when I learned git. I still check it every once in a while, for reassurance :)