Я работаю с малочисленной командой, которая использует мерзавца для управления исходным кодом. Недавно, мы делали ответвления темы для отслеживания функции, затем объединяющие их в ведущее устройство локально затем продвижение их в центральный репозиторий мерзавца на удаленном сервере. Это работает отлично, когда никакие изменения не были внесены в ведущем устройстве: Я создаю свое ответвление темы, фиксирую его, объединяю его в ведущее устройство, затем продвигаю. Ура.
Однако, если кто-то продвинул к источнику, прежде чем я сделаю, мои фиксации не являются ускоренной перемоткой вперед. Таким образом фиксация слияния следует. Это также происходит, когда ответвление темы должно объединиться с ведущим устройством локально для обеспечения моей работы изменений кодом на данный момент. Так, мы заканчиваем с фиксациями слияния везде и журналом мерзавца, конкурирующим с браслетом дружбы.
Так, перебазирование является очевидным выбором. То, что я хотел бы, к:
Мой способ сделать это в настоящее время упоминается ниже:
git checkout master
git rebase master topic_1
git rebase topic_1 topic_2
git checkout master
git rebase topic_2
git branch -d topic_1 topic_2
Существует ли более быстрый способ сделать это?
Для нашей команды мы установили что-то, что работает очень хорошо и вообще не использует rebase.
Мы сокращаем нашу работу в тикетах Jira, что не занимает много времени, обычно 1-2 дня. Каждый разработчик создает ветку для каждого билета и работает с этой веткой. Когда все будет готово к совместному использованию, оно отправляется на центральный сервер.
Центральный сервер контролируется Hudson CI-сервером, который извлекает изменения, объединяет все обновленные ветки, перестраивает программное обеспечение, запускает тесты и отправляет все в центральный главный репозиторий git.
Оттуда мы возвращаем его в наши репозитории. Мы регулярно (то есть каждые пару дней) объединяем наши рабочие ветки с центральным мастером, чтобы держать их «закрытыми».
Поскольку никто не работает на машине «слияния» и никто, кроме CI-сервера, не трогает мастер, у нас очень редко возникают проблемы слияния (примерно в 1-2% коммитов). И они быстро решаются на сервере сборки путем очистки рабочей области. Мы обнаружили, что большинства из них можно было бы избежать, если бы ветки оставались короткими и сливались с удаленным мастером перед отправкой.
Мне также нравится, что слияние намного надежнее, чем перебазирование, и требует гораздо меньше доработки.