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