title: "git checkout tag-name" vs "git reset --hard tag-name"
body: <p>I know that there are questions like <a href="https://stackoverflow.com/questions/2541545/is-there-a-difference-between-git-reset-hard-hash-and-git-checkout-hash">this</a>, but that's not what I'm asking.</p>
  
  <p>I also know that:</p>
  
  <p><code>git checkout tag-name</code>:</p>
  
  <ul>
  <li>Detaches you from the branch. (i.e. moves <code>HEAD</code> pointer, keeps <code>BRANCH</code> pointer)</li>
  </ul>
  
  <p><code>git reset --hard tag-name</code>:</p>
  
  <ul>
  <li>Does not detach you from the branch, but makes the previous commits to become "dangling". (i.e. moves both <code>HEAD</code> and <code>BRANCH</code> pointers)</li>
  </ul>
  
  <p>I wonder which one makes more sense for updating to a tag, i.e. should a production be reseted or checked out. I know that a garbage collector may run, removing dangling commits, but then again, if the production is always "pulled" before the process of updating to a tag, I see nothing bad there.</p>
  
  <p>Should a production update to a tag with <code>reset</code> or <code>checkout</code>, considering that a <code>pull</code> is always done prior to this update call?</p>