title: Difference between creating a branch and doing a soft reset? Best way to go back to an old working version?
body: <p>Say the history of my commits is A - B - C and I have only this branch.</p>
  
  <p>B was fully working. I started adding some functionality in C, but it's not working so <strong>I need to go back to B, but I also want to retain the code I wrote in C</strong> because I will want to review it and fix it later.
  What is the best way to do it?</p>
  
  <p>Is the best way to create a new branch starting from B?</p>
  
  <p>What is the difference between that and doing a soft reset? I understand a soft reset doesn't delete the changes (is that correct?) but it's not clear to me how to restore those changes (the code in C), nor what the difference between a soft reset and creating a branch is.</p>
  
  <h2>Aside</h2>
  
  <p>Git just seems needlessly arcane and obscure. I mean, the official docs define push as:</p>
  
  <blockquote>
    <p><a href="https://git-scm.com/docs/git-push" rel="nofollow noreferrer">https://git-scm.com/docs/git-push</a></p>
    
    <p>git-push - Update remote refs along with associated objects</p>
  </blockquote>
  
  <p>I am sure it is technically correct, but it is hardly the most user-friendly explanation. Could they have added a comment explaining it uploads the local repository to the remote one, or something like that?</p>