I have been using Git and Github for my work website for well over two months now. Mostly, keeping my files under strict version control has been very helpful and easy. Occassionally, I find myself staring at the dark background of the Git Bash in Windows as if looking into an abyss of madness and despair.
After reading this amazing post (http://nvie.com/posts/a-successful-git-branching-model/), I tried out a simplified model of having a master branch and a development branch. Changes would be made to the development branch then incorporated into the master branch, which would be (as this site explains), the “ready to go live” version of the site.
I found over the last few days that that I had not been disciplined about my commits and that I had two many features running in the development branch that were out of sync. In other words, I had little projects that were on-going in the development branch and other that were wrapped up and ready to be merged. Because I had not been disciplined about my commits, it was very frustrating to try to use git cherry-pick to pull those features out.
So, yesterday, I decided to abandon the master / dev model and just use branches to work on features until their ready to be merged back into the master branch.