перебаза мерзавцев на удаленные обновления

Я работаю с малочисленной командой, которая использует мерзавца для управления исходным кодом. Недавно, мы делали ответвления темы для отслеживания функции, затем объединяющие их в ведущее устройство локально затем продвижение их в центральный репозиторий мерзавца на удаленном сервере. Это работает отлично, когда никакие изменения не были внесены в ведущем устройстве: Я создаю свое ответвление темы, фиксирую его, объединяю его в ведущее устройство, затем продвигаю. Ура.

Однако, если кто-то продвинул к источнику, прежде чем я сделаю, мои фиксации не являются ускоренной перемоткой вперед. Таким образом фиксация слияния следует. Это также происходит, когда ответвление темы должно объединиться с ведущим устройством локально для обеспечения моей работы изменений кодом на данный момент. Так, мы заканчиваем с фиксациями слияния везде и журналом мерзавца, конкурирующим с браслетом дружбы.

Так, перебазирование является очевидным выбором. То, что я хотел бы, к:

  • создайте ответвления темы, содержащие несколько фиксаций
  • ведущее устройство контроля и вытягивает (ускоренная перемотка вперед, потому что я не согласился на ведущее устройство),
  • переосновная тема переходит на новую голову ведущего устройства
  • переосновные темы против ведущего устройства (таким образом, темы запускаются в голове ведущих устройств), принося ведущему устройству до моей головы темы

Мой способ сделать это в настоящее время упоминается ниже:

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

Существует ли более быстрый способ сделать это?

22
задан bstpierre 4 August 2011 в 13:14
поделиться

1 ответ

Для нашей команды мы установили что-то, что работает очень хорошо и вообще не использует rebase.

Мы сокращаем нашу работу в тикетах Jira, что не занимает много времени, обычно 1-2 дня. Каждый разработчик создает ветку для каждого билета и работает с этой веткой. Когда все будет готово к совместному использованию, оно отправляется на центральный сервер.

Центральный сервер контролируется Hudson CI-сервером, который извлекает изменения, объединяет все обновленные ветки, перестраивает программное обеспечение, запускает тесты и отправляет все в центральный главный репозиторий git.

Оттуда мы возвращаем его в наши репозитории. Мы регулярно (то есть каждые пару дней) объединяем наши рабочие ветки с центральным мастером, чтобы держать их «закрытыми».

Поскольку никто не работает на машине «слияния» и никто, кроме CI-сервера, не трогает мастер, у нас очень редко возникают проблемы слияния (примерно в 1-2% коммитов). И они быстро решаются на сервере сборки путем очистки рабочей области. Мы обнаружили, что большинства из них можно было бы избежать, если бы ветки оставались короткими и сливались с удаленным мастером перед отправкой.

Мне также нравится, что слияние намного надежнее, чем перебазирование, и требует гораздо меньше доработки.

2
ответ дан 29 November 2019 в 04:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: