Merges(続き)
Merge Strategies
-
criss-cross mergeで必要となる概念
- merge-baseをうまく決められない
- どこをmerge-baseにとっても、変更が重複してコンフリクトしてしまう
Degenerate Merges
-
同じコミットをdegenerate(縮退)させる
-
already up-to-date
- targetにother_branchのコミットがすでに全てある
-
fast-forward
- targetがまるまるother_branchに含まれている
- リモート追跡ブランチをmergeするときによくある
-
-
いずれも、実コミットを積まないのが重要
- さもないと永久にstableな状態にならない
Normal Merges
- 実コミットを積む
Resolve
- 2ブランチのコミットで行う直感的なやつ
Recursive merges
- merge baseが一意に定まらない場合に
Octopus merges
- 同時に3つ以上のブランチをマージするやつ
- コンフリクト解消はできない
-
一般化・設計上の美しさに由来
- 親なし (initial commit)
- 親1つ (normal commit)
-
親複数 (merge commit)
- 2つに制限する道理はない
- コミットグラフが美しい
Specialty Merges
Ours
- other_branchsをマージしたという歴史のみ刻む
- ファイルはHEADのまま
Subtree
-
【補】subtreeの雑理解
- submoduleのcommit/push可能できるやつ的な
- 別repoをサブディレクトリにマッピングできる
- subtreeのマージ戦略
英語
-
eponymous
- 名祖の
-
tack on
- 上乗せする