title: Git production/staging server workflow
body: <p>Currently my website (production server) already have a lot of code in it.
  And now I want to start using Git for my projects and setup a staging server for my team.
  Can anybody give me any advise?</p>
  
  <p>Here is the picture in my mind:</p>
  
  <pre><code>        Production        - Production server which already have codes
              ↑             
           Staging          - New staging server, will install Trac too
           ↗↙ ↖↘          
    Developer1  Developer2  - Local development 
  </code></pre>
  
  <p>My question is, how should I start? </p>
  
  <p>Here are some steps in my mind:</p>
  
  <ol>
  <li>do a <code>git init</code> in production server (is this safe?) </li>
  <li><code>clone</code> the repo from production to staging server</li>
  <li>developers <code>clone</code> the repo from the staging to their local machine</li>
  <li><code>push</code> files to the staging server after finish changing</li>
  <li>when staging is ready, <code>push</code> everything to the production</li>
  </ol>
  
  <p>Does this work flow makes sense, or there are some better way to do it?</p>
  
  <p>What if I only want to change one file?</p>
  
  <p>Does origin/master has anything to do with it in this process?? 
  Who is the origin? am I going to end up having multiple origins??</p>
  
  <p>Also, when should a developer use <code>branch</code> in this case? </p>