title: How is remote repository supposed to be in sync with the local repositories in GIT?
body: <p>I am currently using git for a project that has two participants (me and my friend). SO I did the following :</p>
  
  <p>I created a repository on a machine that is always accessible by any machine on our local network.</p>
  
  <p>We both cloned this repository into our respective local machines creating local repositories. </p>
  
  <p>Now suppose at one point of time (wherein all three repository copies are in the exact same stage), I fork a branch and start some development in that branch. I push those changes to the remote and I see that a new branch has automatically been created in the remote.</p>
  
  <p>On the other machine I pull that branch into a new local branch of the same name so they are all in the same state again.</p>
  
  <p>Now when I am done with this fork branch, and I want it merged with the master, I simply did a checkout to master and did a <code>git merge my_branch</code>. Now how do I make this change reflect in the global repository and the other local repository ? Will I have to issue merge commands there too ? Or is there some way to push and pull so that merges are automatically synced? </p>
  
  <p>What IS the git philosophy ? Should all local repositories and the global repository be exactly in sync commit by commit so that the trees everywhere are exactly same ? Or can individual  trees be different and whatever branches are needed be pulled from the remote accordingly ?</p>
  
  <p>(I have learned GIT by searching commands for whatever I need done, however I am very confused by how it is supposed to work)</p>
  
  <p>The remote repository I created was a bare repository</p>