gitにコミットしていくうちに一部を切り出して別リポジトリにシたくなった場合の分割方法。
リポジトリ直下にaaa,bbb,ccc,dddのディレクトリがあり、aaaとbbbをrepo1に、cccとdddを別のrepo2に分けたい場合。
- リポジトリ(cloneしたやつではなくリポジトリ自体に直接でOK cloneしたものでもOK)をrepo1とrepo2として2つにコピー。
- repo1で以下実行。
- git filter-branch –tree-filter ‘rm -rf ccc ddd’ HEAD –all
- git gc –aggressive –prune=now
- repo2で以下実行。
- git filter-branch –tree-filter ‘rm -rf aaa bbb’ HEAD –all
- git gc –aggressive –prune=now
これで過去の履歴まで含めてすべて分割出来たはず。
ただ空のコミットが残ってしまうっぽい…