Git magic: split repository into two
We’ve just hit this point in our project (packit) that we want to split it to two repositories: CLI tool and a web service.
I was thinking of keeping the git history for files I want to move to the other repository. There is a ton tutorials and guides how to do such a thing. This is what worked for me:
-
Clone the original repository.
-
Have a list of files I want to remove:
$ git ls-files >../r
Now edit ../r by removing entries from the list for files you want to keep.
- Use
git filter-branch
which will remove files from git history we don’t want in our new repo (using the ../r list):
$ git filter-branch -f --tree-filter "cat $PWD/../r | xargs rm -rf" --prune-empty HEAD
That’s it, enjoy git history without files you don’t care about.