使え。(subdirectory-filter個別にしてこれ実行してpullしたら良い感じになるんじゃねーの!?)
git filter-branch -f --tree-filter '
for file in `find -type f | grep -v ./$(pwd | sed -e "s/\/\.git-rewrite.*//g" | sed -e "s/.*\///g")/ | grep -v .git | sed "s/\.\///g"`
do
if [ -d ${file%/*} ]; then
mkdir -p $(pwd | sed -e "s/\/\.git-rewrite.*//g" | sed -e "s/.*\///g")/${file%/*}
mv $file $(pwd | sed -e "s/\/\.git-rewrite.*//g" | sed -e "s/.*\///g")/${file%/*}