В компании, в которой я работаю в настоящее время, мы используем при
разработке довольно распространённую модель ветвления, а в качестве
инструмента для стандартизации работы по этой схеме git-flow. Так же мы
дополнили эту схему ещё одной веткой — staging. Это временная ветка, в
которую сливаются feature branches, и на основе неё делаются
промежуточные релизы на тестовый сервер. Естественно, всё, что
происходит в этой ветке, нужно для предварительного просмотра и
тестирования выполненных задач и никак не должно попадать ни в основную
ветку разработки, ни в master, то есть в итоговый релиз. В принципе,
схема работы достаточно удачная. Она упрощает взаимодействие и работу
большой команды с разным навыком работы с git, и нештатные ситуации
случаются достаточно редко, но зато, если случаются, то это запоминается
надолго.