どういうことか
AAAAAの下にフォルダがあるが、それぞれのフォルダは別のプログラムを保持していて1つにまとめておく必要が一切ないので分割します。
これを
AAAAA
BBBBB
CCCCC
aaa
bbb
ccc
DDDDD
EEEEE
こうなるようにします。
新しいリポジトリを作り、ログもそのまま持っていきます。
CCCCC
aaa
bbb
ccc
やったこと
- 作業ブランチを作る
git checkout -b filter
- コマンドでCCCCC以外をフィルタ
git filter-branch -f --subdirectory-filter CCCCC/ -- --all
コマンド結果
AAAAA
CCCCC
aaa
bbb
ccc
- CCCCC以下のファイルを移動
git filter-branch -f --tree-filter "git mv -k CCCCC/* ."
コマンド結果
CCCCC
aaa
bbb
ccc
- 移行対象のリモートに追加してプル
git remote add work file:///tmp/AAAAA
git pull work filter
- 移行対象のリモートにプッシュ
git push origin master