github
 
1. (one off) Fork a Repo, making a 'downstream' Remote Repo on github
 
http://help.github.com/fork-a-repo/
 
2. (one off) Clone the 'forked' Repo from github, making a Local master Repo
git clone git@github.com:samthetechie/emoncms.git
       (or  git remote add origin git@github.com:openenergymonitor/WIZnet-Ethernet-Shield-emoncms-example.git)
3. Make changes to Local Master: change, edit, improve code, add files etc. 
 //open terminal in correct folder
 

git add <file>//makes github track new files 

git commit -m 'your commit message here'

git push

or (git push -u origin master)

 
5. Define the Upstream which Repository is upsteam of your Remote 'forked' Repo.
 
git remote add upstream git://github.com/openenergymonitor/emoncms.git
 
6. Fetch Changes from Remote Upstream (downloaded to a different local branch i.e. you cannot see the new files in the project folder untill you merge in the next step)
git fetch upstream
 
7. Merge Changes from remote upstream with local Repo.
git merge upstream/master
 
8. Push the merged copy to your 'forked' repo on github
git push
9. Have changed pulled back up the upstream server: Submit a pull request from the github website. This has to be accepted by the admin before it becomes the new upstream

N.B. conflict resolution is really really simple. Open the conflicted file and manually merge the two versions. Email/google chat with the other programmer/coder to ask what stuff does if necessary.
Delete all the random <<<<<<< and ========= and >>>>>>>>> tags that get added.
Delete all the random *.base *.local files that get made too!
Continue as normal.