Sempre quis dividir sua base de código em várias partes e manter todos os commits?
Isso é mais fácil do que você pode pensar, graças à grandiosidade do Git, tudo o que você precisa fazer é:
- Clone o repositório
- Corre
git filter-branch
- Empurre para o novo controle remoto, pronto!
Os comandos
Em seu shell, tudo isso seria (observe os marcadores de posição):
$ git clone <old-repo-remote> my-repo-folder
$ cd my-repo-folder
$ git filter-branch --subdirectory-filter <folder-to-export> -- --all
$ git remote rm origin
$ git remote add origin <new-repo-remote>
$ git push --tags origin master
Uma advertência: as tags podem não ser reescritas corretamente. Nesse caso, eles ainda estarão apontando para os commits errados e você notará que tem uma árvore de ramos estranha. Basta remover ou recriar as tags e tudo voltará ao normal.