Контроль версий - это ведь не отчет о проделанной работе, это просто удобный способ вспомнить, как что-то менялось, и сравнить то, что было до, с тем, что стало после.
Коммитить на уровне "написал новую функцию", "добавил новый класс" и, тем более, "создал десять объектов" - по большому счету, бессмысленно.
Вам нужно будет откатываться или хотя бы сравнивать только тогда, когда вы что-то меняете. И когда понадобится сравнить, вам нужно будет знать, что вы поменяли и зачем. Первое вам скажет git, второе - только ваш комментарий к коммиту. И именно в этом его важность, да и важность раздельных коммитов вообще.
В частности, это означает, что если вы занимаетесь каким-то новым классом и поэтому решили исправить API старого - вам желательно вынести исправление старого класса в один коммит (с уточнением, ради чего было исправление), а создание нового класса - в другой. Который вам понадобится когда-нибудь только как отправная точка в списке правок этого класса.
В общем, на git нужно смотреть не снизу (от кода), а сверху - с точки зрения собственных интересов через год-два, когда к этому коммиту придется вернуться. И все станет проще.