Как мы решаем проблемы слияния с запросами на удаление - PullRequest
0 голосов
/ 13 сентября 2018

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

Мы основываем все возможности мастер ветки. Затем мы создаем ветку релиза, с которой запускаем PR.

Ситуация, которую я не знаю, как решить, это когда мы сначала связываем функцию 1, затем функцию 2 с веткой релиза.

Функция 3 имеет конфликт слияния с функцией 1, поэтому из того, что я прочитал, нам нужно вручную объединить релиз с веткой функции 3, а затем сделать новый PR из функции 3 с веткой релиза.

Если после тестирования ветки релиза мы обнаружим, что функция 1 и функция 2 не будут развернуты, но мы хотим выпустить функцию 3. Теперь это невозможно, поскольку обе эти функции объединены в особенность 3.

Лучшее решение, которое я нашел до сих пор, - создать ветку «Feature 3 - Merge Release», но я не очень доволен этим решением. Как мне справиться с такими ситуациями?

(в прошлый раз, когда это произошло, кстати, это была функция 1- 241, которая нам не понадобилась в релизе)

1 Ответ

0 голосов
/ 14 сентября 2018

Давайте наметим это.У вас есть три тематические ветви.Здесь все они разветвлены от одного и того же коммита, но это не имеет значения.

      G - H [feature2]
     /
A - B - C [release]
    |\
    | I - J [feature1]
    \
     E - F [feature3]

Вы можете видеть этот вид визуализации с помощью git log --graph --decorate --oneline, за исключением того, что он будет идти сверху вниз.

Ситуация, которую я не знаю, как решить, - это когда мы сначала публикуем функцию 1, а затем функцию 2 в ветке релиза.

То естьвам так нравится.

      G - H ---
     /         \
A - B - C - K - L [release]
    |\     / 
    | I - J
    \
     E - F [feature3]

В функции 3 есть конфликт слияния с функцией 1, поэтому из того, что я прочитал, нам нужно вручную объединить релиз с веткой функции 3, а затем выполнитьновый PR из функции 3 для выпуска ветки.

Это оставляет вас такими.

      G - H ---
     /         \
A - B - C - K - L [release]
    |\     /     \
    | I - J       \
    \              \
     E - F -------- M [feature3]

Если затем, после тестированиявыпуская ветвь, мы обнаруживаем, что функция 1 и функция 2 не будут развернуты, но мы хотим выпустить функцию 3. Теперь это невозможно, поскольку обе эти функции объединены в функцию 3.

"Ветвь" - это просто ярлык на коммитах.Вы можете перемещать их.Это включает перемещение их до того, как произошло слияние.Сначала восстановите feature1 и feature2 до их объединения.

git branch feature1 J
git branch feature2 H

           [feature2]
      G - H ---
     /         \
A - B - C - K - L [release]
    |\     /     \
    | I - J [feature1]
    \              \
     E - F -------- M [feature3]

Затем переместите feature3 назад до слияния.

git checkout feature3
git rest --hard F

           [feature2]
      G - H ---
     /         \
A - B - C - K - L [release]
    |\     / 
    | I - J [feature1]
    \ 
     E - F [feature3]

Затем переместите release назаддо слияния feature1 и feature2.

           [feature2]
      G - H
     /
A - B - C [release]
    |\
    | I - J [feature1]
    \ 
     E - F [feature3]

Теперь вы вернулись до того, как произошло слияние.Теперь вы можете объединить feature3 в release.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...