На самом деле, вы задали достаточно религиозный вопрос.
Я для себя (и команды)
1. Делаю коммит, когда хочу зафиксировать какое-то состояние кода, причём, иногда, это даже состояние типа "WTF".
2. Намного более важно не когда вы делаете коммит, а как вы ветвитесть.
В частности, рекомендуемая практика:
2.0. Коммиты в процессе разработки
никогда не делаются в master (хотя бы в develop, чаще нужно больше веток)
2.1. в master-е каждый коммит = релиз (условно стабильный), появляется merge-м из веток разработки.
2.2. На каждую "большую" (это субъективно) фичу делаете новую ветку.
2.3. Таки интенсивная разработка первой (или 0-й) версии и дальнейшей разработки, после первого релиза, скорее всего, будет очень сильно отличаться.
Тут некий шаблон (к сожалению, не "однозначно верно")
https://habrahabr.ru/post/106912/