Как объединить две ветви с соответствующими изменениями в мастер? - PullRequest
0 голосов
/ 31 мая 2019

В GIT у меня есть 2 ОТДЕЛЕНИЯ и МАСТЕР .

BRANCH1 является извлеченным из мастера и имеет некоторые коммиты для объединения с мастером и объединение BRANCH1 займет некоторое время время из-за некоторых причин тестирования.

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

  1. извлеките из BRANCH1, затем выполните некоторые коммиты, затем объедините его с мастером после того, как BRANCH1 слился на некоторое время.
  2. (ИЛИ) извлеките из MASTER, затем перебазируйте его с помощью BRANCH1, затем сделайте несколько коммитов, затем объедините его с MASTER.

Итак, что я могу сделать лучше всего для работы над BRANCH2 с изменением BRANCH1 и последующим объединением его с MASTER?

Любые предложения приветствуются и Спасибо ...

1 Ответ

1 голос
/ 31 мая 2019

Всякий раз, когда вы готовы к слиянию branch2, вы должны перебазировать его на branch1 (если branch1 еще не объединено, или поверх master (если branch1 уже было объединено)

Таким образом:

  • вы разрешаете конфликты локально, переигрывая branch2 коммитов поверх master
  • , окончательное слияние будет ускоренной перемоткой вперед (тривиально) один.

То есть начальная ситуация:

m--m--m
       \
        b1 --b1--b1--b1
              \
               b2--b2

Как только вы будете готовы, b1 мог развиться и слиться с мастером:

m--m--m--m--m---------------M--m--m (master)
       \                   /
        b1 --b1--b1--b1--b1         (branch1)
              \
               b2--b2--b2--b2       (branch2)

A rebase --onto будет достаточно:

git rebase --onto master $(git merge-base branch1 branch2) branch2

m--m--m--m--m---------------M--m--m--b2'--b2'--b2'--b2' (branch2)
       \                   /    (master)
        b1 --b1--b1--b1--b1         (branch1)

Тогда merge master будет тривиальным

...