Для нашей команды мы настроили что-то, что работает очень хорошо и вообще не использует rebase.
Мы сокращаем нашу работу в билетах Jira, которые не занимают много времени, обычно 1-2 дня. Каждый разработчик создает ветку за тикет и работает над этой веткой. Когда он готов поделиться, он отправляется на центральный сервер.
Центральный сервер контролируется CI-сервером hudson, который извлекает изменения, объединяет все обновленные ветви, перестраивает программное обеспечение, запускает тесты и помещает все в центральный главный репозиторий git.
Оттуда мы возвращаем его в наши хранилища. Мы регулярно (т. Е. Каждые пару дней) объединяем наши рабочие ветви с центральным мастером, чтобы держать их «близко».
Поскольку никто не работает на 'объединяющей' машине, и никто, кроме CI-сервера, не касается мастера, у нас очень редко возникают проблемы слияния (примерно в 1-2% коммитов). И они быстро решаются на сервере сборки путем очистки рабочей области. Мы обнаружили, что могли бы избежать большинства из них, сохранив короткие ветви и объединившись с удаленным мастером перед нажатием.
Мне также нравится, что объединение гораздо надежнее, чем перебазирование, и требует гораздо меньше переделок.