I usually will create a new branch based on the TODO list item I am working on. Then I will checkout that branch and work on the new feature. When it is done I will merge it back into master and write a commit about what I changed. Then I push it to the master branch on origin. There are only two of us working on our project right now so we don't branch on Github. However, a large team should probably push to a new branch on the origin and then merge it there.