マージベース(共通祖先)を見つける 2. マージする各コミット に対し、それぞれマージ ベースからパッチを作る 3. マージベースの tree に各パッチを当てる 4. マージした各コミット を親コミットに、パッチを当 てた tree をルート tree にしたコミットを作る p main p topic T merged T base C base = git merge-base main topic p main = git diff C base main p topic = git diff C base topic T base = C base ^{tree} T merged = T base + p main + p topic = C merged ^{tree} main = C merged ^1 topic = C merged ^2 C merged git commit-tree -m “Merge branch ‘topic’” -p main -p topic T merged