Having learned Git, Let me put down my thoughts on how parallel development can happen using Git.

All the source will available in  “central repository” (say github). I assume 3 developers working in parallel on the same project hosted on the ‘central repository’.

  • DevA clones the central repository to his local machine. 
  • DevA checkout the master branch. So now the working set will have the latest from master branch.
  • To work on a feature / bug, he creates a  new branch, say feature_123.  He should now be placed in the feature_123 branch
  • He develops the feature, keep commit ‘ing the changes to feature_123 branch.
  • Periodically he pull  the changes from central repository to get the latest changes from other developers.
  • Once done he push the changes to origin (i.e., central repository).

The Developers (DevA, B, and C) is not allowed to merge their branches into the master to avoid future conflicts and confusions. The administrator  of the repository should merge the feature branches to master. 

For a simpler process after every merge of a feature_branch to master,  all the developers should pull the changes from the central repository to refresh their local repositories. This restriction however would become bottleneck if the project is shared among 3+ developers. 

Still need to understand how Git can be used with minimal conflicts under larger teams.