title: What is difference between "git checkout -f" and "git reset --hard HEAD"?
body: <p>I need to revert local changes for deployments. (I'd used <code>svn revert</code> for this in old skool SVN days.)</p>
  
  <p>And im using <code>git reset --hard HEAD</code> for this. (Also <code>git fetch</code> and <code>git merge origin/$branch --no-ff</code> for syncronizing with upstream branch.)</p>
  
  <p>But some articles points <code>git checkout -f</code> for reverting changes. </p>
  
  <p>What's key differences between this commands. Which way is the recommended? </p>