Звучит как хороший (и нормальный) подход. То, что вы можете сделать, - это иметь несколько веток разработки, для каждой функции или исправления ошибок, над которыми вы работаете. Это позволяет переключаться между ветками в зависимости от того, над чем вы хотите работать сегодня. Но если вы являетесь разработчиком-одиночкой в своем проекте, это может быть просто излишним.
Просто позднее обновление моего ответа, я нашел эту статью, и похоже, что это очень хороший подход к управлению версиями с помощью git: http://nvie.com/posts/a-successful-git-branching-model/
И, кстати, это очень близко к тому, как мы используем контроль версий на работе.
Однако это, вероятно, наиболее актуально для проектов с несколькими людьми.