I find both of these can unstage a file.
I used to use
git reset file to unstage a file.
But today when I read the http://git-scm.com/book.
I find it taught me to use
git reset HEAD file, what does the HEAD do here? In which circumstances it's a must?
PS: An additional question, I can use
git checkout file to unmodified a file. Meanwhile this book suggest me to use
git checkout -- file. What's the difference here?