title: What's the difference between 'git rm --cached', 'git restore --staged', and 'git reset'
body: <p>I have come across the following three ways in order to unstage the files that were staged by the command 'git add'</p>
  <pre><code>git rm --cached &lt;file&gt;
  git restore --staged &lt;file&gt;
  git reset &lt;file&gt;
  </code></pre>
  <p>Their behaviors looked completely same when I ran those commands one by one.
  What exactly are the differences between them?</p>