Я обычно под отдельную задачу создаю свою ветку, и пилю спокойно задачу в ней. Это позволяет не портит основную ветку незаконченными задачами.
А в коммиты сливаю отдельные фичи задачи. Это позволяет коммитам быть наглядными, позволяет быстро искать реализацию фич в истории, и позволяет безопасно и быстро откатывать фичи, если больше не нужны.
Комитить каждую строчку бессмысленно, а коммитить огромные куски кода черевато большими проблемами, особенно при конфликтах.
Ежедневные/ежемесячные коммиты - это вообще жесть.
Git - это история, каждая запись в ней должна иметь смысл.