How do I merge multiple branches into master?

Git

Git Problem Overview


        C---D  =>b1
      /    
     /  E---F  =>b2
     | /   
  A--B =======> master
     | \
     \  G---H  =>b3
      \ 
       I---J   =>b4

I want to merge b1,b2,b3,b4 into master, is it possible merge at once?

something like:

git checkout master
git merge b1 b2 b3 b4

Git Solutions


Solution 1 - Git

Git's merge command supports multiple merging strategies. There are two strategies that can merge more than two branches at a time.

See also this question for a less formal description of each one.

octopus

> This resolves cases with more than two > heads, but refuses to do a complex merge that needs manual resolution. > It is primarily meant to be used for bundling topic branch heads > together. This is the default merge strategy when pulling or merging > more than one branch.

The last statement implies that if you do git merge branch1 branch2 ..., it'll use the octopus strategy.

ours

> This resolves any number of heads, but the resulting tree of the merge is always that of the current branch head, effectively ignoring > all changes from all other branches. It is meant to be used to > supersede old development history of side branches.

See this question for a use case example.

Solution 2 - Git

Git has a merging strategy called octupus which can merge multiple branches, as long as there are no complex conflicts. The command to do this is exactly as you suggested git merge b1 b2.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionnfpyfzyfView Question on Stackoverflow
Solution 1 - GitAlexei SholikView Answer on Stackoverflow
Solution 2 - GitjbrView Answer on Stackoverflow