Я не спрашивал зачем нужны отдельные ветки и чем это лучше. Я это итак прекрасно знаю. Но вы упускаете другой подводный камень. Если веток слишком много и мы не успеваем все ветки замерджить, закрывать и потом и вовсе удалять, то потом возникает такие путаницы, кто что делал и возникает такой клубок из спутавшихся ниток. Поэтому я и говорю, что иногда ветку можно делать обобщённой для ряда коммитов, если фичи делаются для одной и той же проблемы.
Это решается coding conventions - пишите единообразные commit message и потом пользуетесь git-ом из консоли, в т.ч. через конвейеры/pipelines или из скриптов. Самый простейший способ - теги и feature-бранчи. Если у вас тикеты так же плодятся - #тикета-бранчи. Главное чтобы ticket/issue/bug автоматически закрывался как только ветка прошла интеграцию (сбилдилась и не сломала тесты) - со ссылкой на хэш git-а. Т.е. хук запустил pipeline, если результат успешный - скрипт всё сделал сам. Чем конкретно (слиянием, закрытием и т.д.) будет заканчивать дёргаемый коммитом pipeline - зависит от workflow