У меня три ветки, master (он же продакшн), test и dev. Доступ к мастеру и тесту имеет один человек, который отвечает за деплой. Все остальные работают в dev ветке. При коммите в test срабатывает гит-хук и запускает phing. То же самое и с веткой master. Разница только в том, что разворачивается в разные директории.
Возможно, решение не универсальное, но мне для моих нужд более, чем достаточно.