title: What's the difference between Git Revert, Checkout and Reset?
body: <p>I am trying to learn how to restore or rollback files and projects to a prior state, and don't understand the difference between <code>git revert</code>, <code>checkout</code>, and <code>reset</code>.  Why are there 3 different commands for seemingly the same purpose, and when should someone choose one over the other?</p>