Проблема с Git слияния от филиала к филиалу - PullRequest
0 голосов
/ 30 октября 2018

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

Ответы [ 3 ]

0 голосов
/ 30 октября 2018

Существует как минимум пара вариантов решения этой проблемы:

Вариант 1 - Объединение объектов по одной

Слияние ветвей объекта по отдельности непосредственно с мастером (игнорировать проявление при слиянии с мастером) Этот подход должен работать независимо от того, каков ваш процесс. Тем не менее, вы рискуете, что разработка опережает мастера и содержит непроверенные изменения. Вы можете смягчить это, отменив неудачные изменения в разработке или заморозив периоды, когда разработка должна достичь достойного выпуска.

Как указал mjuarez, вы можете альтернативно использовать cherry-pick для достижения аналогичного результата - но только если ваши функции могут быть ограничены отдельными коммитами.

Вариант 2 - объединить сериализованные функции

Если ваши функции проверяются или принимаются последовательно, то есть в том же порядке, в котором они объединяются для разработки, вы можете объединиться для создания конкретного коммита из ветви разработки, в которой содержатся необходимые изменения.

Например, если развертка содержит:

  • функция с хешем aaa (самая старая)
  • функция b с хэшем, bbb
  • функция c с хэшем ccc (новейшая версия) = развернуть HEAD

... и вам нужно только проверить / продвинуть функции a и b для выпуска в master, затем вы можете объединить коммит bbb в master.

Самым большим преимуществом этого является то, что вы не рискуете накапливать непроверенные изменения в разработке.

Другое

Помимо этого, вы можете рассмотреть и другие подходы ветвления.

https://nvie.com/posts/a-successful-git-branching-model/

https://git -scm.com / книга / а / v2 / GIT-ветвящийся ветвящийся Workflows

0 голосов
/ 30 октября 2018

Вот подход, который мы применяем в нашей команде. Пожалуйста, посмотрите, соответствует ли это вашему требованию. Как только функция объединена для разработки и тестирования QA, мы создаем ветку релиза (Release_XXX) из Develop. Код переносится в производство из этой ветки выпуска. После завершения производственной миграции мы переносим код на master только из этой ветки релиза, это гарантирует, что вы переносите только проверенный код функции на master.

0 голосов
/ 30 октября 2018

Есть несколько способов сделать это с помощью Git, но одним из способов было бы cherry-pick только те функции, которые вы хотите добавить в ветку релиза (которая, как вам кажется, master из вашего описания). Для этого я рекомендую, чтобы все ваши функции / исправления были заранее согласованы / объединены в ветви функций, чтобы легче было выбирать, какие хеши выбирать.

Подробнее в этом другом вопросе: Что означает «выбор вишни» с помощью git?

...