title: How does Git's transfer protocol work
body: <p>I am working with Git for more than one year and now I have to explain it to others in our group. That is why I need a bit more backround.
  I went thourgh most of the Git Book in the last year and recently I continued with chapter 10. In chapter <a href="https://git-scm.com/book/en/v2/Git-Internals-Transfer-Protocols" rel="noreferrer">10.6</a> I got completely stuck: </p>
  
  <blockquote>
    <p>Let’s follow the http-fetch process for the simplegit library:</p>
  
  <pre><code>$ git clone http://server/simplegit-progit.git
  </code></pre>
    
    <p>The first thing this command does is pull down the info/refs file.
    This file is written by the update-server-info command, which is why
    you need to enable that as a post-receive hook in order for the HTTP
    transport to work properly:</p>
  
  <pre><code>=&gt; GET info/refs
  ca82a6dff817ec66f44342007202690a93763949     refs/heads/master
  </code></pre>
  </blockquote>
  
  <p>I have a small test repo <code>https://github.com/to_my/repo</code> and <code>git clone</code> works well. But</p>
  
  <ul>
  <li>Where is the folder <code>info/refs</code>? I only find a <code>/.git/info/exclude</code> afther the <code>clone</code>...</li>
  <li>How should I use the <code>update-server-info</code> command? Is it part of git clone somehow?</li>
  <li>I am competely lost with "...which is why you need to enable that as a post-receive hook" although I understand hooks (I thought) and use a pre-commit hook for automatically increasing the package version.</li>
  <li>I can't get the command <code>GET info/refs</code> in git bash work.</li>
  </ul>
  
  <p>Sorry if the questions are stupid, but I just don't understand how to put these pieces from the documentation together.</p>