I'm not an expert at Github but I use it a lot to "consume" libraries that can be found in many high quality repositories.
Yesterday, I read a very small snippet from @cocoanetics' blog that seems to be a very good starting point to learn more about Git in general and how it can fit into a workflow of a contributor. Here is an excerpt from the post which I commented to the best of my current Git knowledge:
Generally the process to contribute to any open source project on GitHub is really simple once you did it for the first time.
- You set up git and GitHub: you'll be able to learn more about this process by searching the web with "github tutorials" or "git tutorials".
- You fork a project you want to contribute something: this will create a different branch, your own so you can start your own work and eventually contribute to the master.
- You clone your fork to your local hard disk: this step is essentials as it will clone to your local machine the repository that you forked in the previous step.
- You modify your local copy and commit the changes, providing sensible descriptions in the commit messages: changes are committed to your forked branch. See the following step.
- You push your local clone to your online fork: so your changes becomes available on Github.
- You create a pull request for the original master: in order to see other's changes to the repository you forked, you ask for them to be integrated into your forked branch with a pull.
- The owner might require some further changes, he will communicate with you via the pull request. If you respond to such e-mails they will automatically be appended to the conversion: a pull request notifies the owner (the master) of the repository of your changes.
- Further commits you make to the branch you pushed will show up as updates to the pull request: obvious.
- Finally when the owner is happy he can merge your changes into the master with just one button: obvious too.