Ответ 1
логическое объяснение структуры ветвления/слияния
Структура в основном следует тому, что вы сказали: ветвь интеграции и ветки функций.
В этом виде документооборота важно понять, как вы это делали, что все разработки не попадут в следующий выпуск.
Но с DVCS это также ключ к пониманию того, что ветвь может быть опубликована и клонирована.
Эта последняя точка (публикация) будет иметь большое влияние на команды слияния , а именно:
- слияния
- перебазироваться.
Всякий раз, когда разработчик должен объединить свою работу с какой-либо интеграционной ветвью (он вытащил из "центрального" репозитория), я бы рекомендовал:
# switch back to previous release tag (from where feature branches for next release where done)
$ git checkout previousReleaseTag
# create one own private
$ git checkout -b myIntegrationBranch
# merge or cherry-pick what we want to actually put in the next release
$ git merge... from our feature branch
# rebase that private integration branch on top of actual integration branch
$ git rebase integrationBranch
Последняя перебаза перепишет историю ваших локальных консолидаций, но в филиале вы все равно не опубликуете (так что никакого вреда не было).
Когда все ваши новые функции будут работать, вы можете объединить эту частную ветвь с текущим HEAD соответствующей ветки интеграции.
"Частный филиал - слияние или выбор вишни - перебаза - локальное разрешение - слияние" - это необходимый рабочий процесс, поскольку нескольким командам придется объединить свою работу в общую ветку. Им нужно воспроизвести то, что они хотят опубликовать в частной ветке, прежде чем слить ее в общую ветку, иначе каждая команда может сломать то, что представлено ГОЛОВКОЙ общей ветки.
Другие вопросы в вопросах:
- git частота фиксации
- git освобождает управление (другой рабочий процесс слияния)
- статьи JC Hamano (благодаря Якуба Нарбски)