Используем второй метод. Таск — ветка, в ней может быть куча коммитов, потом — git merge --no-ff в основной бранч (develop), релизы вливаются в master и тегируются.
Плюс: при адекватном именовании веток выглядит дерево репозитория более чем красиво. Всегда понятно, из какой таски этот файлик выплыл (имя бранча содерит в себе id таска в багтрекере), как шла разработка и так далее. Весьма удобно.