git レポジトリから特定のディレクトリへの変更のみを抜き出した新しいレポジトリを作る
orig_repo
中の some_dir
のみを含む new_repo
を作りたいとする:
$ git clone orig_repo new_repo
Cloning into new_repo...
done.
$ cd new_repo
$ git filter-branch --tree-filter 'zsh -o extendedglob -c "rm -rf *~some_dir || true"' HEAD
Rewrite xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (100/100)
Ref 'refs/heads/master' was rewritten
$ git filter-branch --prune-empty -f
Rewrite yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy (100/100)
Ref 'refs/heads/master' was rewritten