Я бы сказал, что это, вероятно, личное предпочтение, но в некоторых сольных проектах, над которыми я работаю, иногда бывает полезно хотя бы создать ветку для новой работы, оставив ветку master доступной для исправления ошибок. Я нахожусь в середине работы над чем-то новым, когда кто-то приходит и сообщает об ошибке в существующей версии. В этой ситуации я могу легко отложить новый код и исправить ошибку в основной ветке, а затем вернуться к тому, над чем я работал. Затем в конце объедините их.
Я обычно не разветвляюсь для каждой новой функции. Обычно я не работаю над несколькими функциями одновременно ... только время от времени, и в этом случае это зависит от того, насколько эти две функции пересекаются по файлам, что заставило бы меня снова выполнить ветвление.