Объедините три ветки GitHub локально

В настоящее время у меня есть сценарий, в котором я хочу локально объединить две ветви в третью ветку. Так что сценарий есть. К вашему сведению, я новичок в github.

  1. Мастер -> Epic_1
  2. Мастер -> Epic_2

Теперь я хочу слить ветку Epic_1 сначала с мастером, а затем слить ветку Epic_2 с мастером поверх слитых Epic_1 и мастера. Я не уверен, что искать, чтобы получить правильный ответ, поэтому добавлю этот вопрос. ВАЖНО - Я хочу, чтобы все это делалось только локально, и ничто не должно идти в удаленную ветку.

Спасибо рэй

2 ответа

Решение
git checkout master   # go to master since that’s your target branch
git merge Epic_1      # merge in the first branch
git merge Epic_2      # merge in the second branch

Это даст вам результат, который выглядит примерно так:

            (old) master      master (after merges)
                    ↓           ↓
* -- * -- * -- * -- * -- M1 -- M2
                       /      /
* -- * -- * -- * -- * -      /
                    ↑       /
                  Epic_1   /
                          /
* -- * -- * -- * -- * -- *
                         ↑
                       Epic_2

Как и все в Git, это происходит только локально, поэтому ни на одном из ваших пультов это никак не отразится. Конечно, вы можете нажать ветку master, чтобы обновить ее на своем пульте.

Ты только

git fetch # in case these branches are from the remote and to be up-to-date

git checkout master

git merge branch_1

git merge branch_2

Теперь вы можете сделать

git status

а также

git log

чтобы увидеть состояние мастера. Он будет локальным, если / пока вы явно не нажмете мастер на удаленном (возможно origin в твоем случае).

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

Существует также множество вариантов слияния и перебазирования, а также соответствующие темы, такие как перемотка вперед, но это выходит за рамки этого вопроса.

Другие вопросы по тегам