Skip to content
  • Junio C Hamano's avatar
    git-merge-octopus: use (merge-base A (merge B C D E...)) for stepwise merge · c5dc9a28
    Junio C Hamano authored
    Suppose you have this topology, and you are trying to make an octopus
    across A, B and C (you are at C and merging A and B into your branch).
    The protoccol between "git merge" and merge strategies is for the former
    to pass common ancestor(s), '--' and then commits being merged.
    
    git-merge-octopus does not produce the final merge in one-go.  It
    iteratively produces pairwise merges.  So the first step might be to come
    up with a merge between B and C:
    
                   o---o---o---o---C
                  /                 :
                 /   o---o---o---B..(M)
                /   /
            ---1---2---o---o---o---A
    
    and for that, "1" is used as the merge base, not because it is the base
    across A, B and C but because it is the base between B and C.  For this
    merge, A does not matter.
    
    I drew M in parentheses and lines between B and C to it in dotted line
    because we actually do _not_ create a real commit --- the only thing we
    need is a tree object,...
    c5dc9a28