Basic Git Flow
master will be the release-able branch, every collaborator will be on a feature branch. From time to time, collaborator will merge master branch into his/her feature branch to keep the feature branch up-to-date. Then when feature is ready, merge feature branch into master branch.
#typical workflow
git checkout master
git fetch
git merge origin/master #make the master branch latest
git checkout -b new_feature_branch #create a new branch
git add new_feature.rb
git commit -m "Add new_feature.rb file"
git fetch #make sure others
git push -u origin new_feature #push up a new branch to remote repo
git merge master #get master branch update (optional)
#other collaborator to take a look at that branch
git checkout master
git fetch
git merge origin/master
git checkout -b new_feature_branch origin/new_feature_branch
git log #look around and see what are the changes
git commit -am "update new_feature.rb file" #update some files
git fetch
git push
#original collaborator
git fetch
git log -p new_feature_branch..origin/new_feature_branch
#review the update other collaborator made
git merge origin/new_feature_branch #merge in the change
git checkout master
git fetch
git merge origin/master
git merge new_feature_branch #merge in the changes into master
git push