memo

2011-02-08

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