Recentemente, percebi que um subdiretório em um projeto Git
seria melhor como um projeto independente.
Felizmente, essa é uma necessidade comum, o
Git tem um bom comando para facilitar a chamada subtree split
.
Ele cria um novo branch no projeto,
com apenas os commits que envolvem o subdiretório especificado.
Digamos que você tenha um projeto com um subdiretório chamado plugins/media
e deseja isso em um repositório independente:
git subtree split -P plugins/media -b media
Isso colocará todos os commits relacionados a plugins/media
em um novo branch chamado media
. Você pode confirmar o resultado com git log media
.
Em seguida, crie o repositório de destino, por exemplo no GitHub
ou localmente:
git init --bare /tmp/proj-media.git
Crie um remoto para o repositório,
adicione um remoto para ele
e envie o media
branch para o remoto com o nome `master:
git remote add proj-media /tmp/proj-media.git
git push proj-media media:master
Observe que o repositório original não foi alterado:
o plugins/media
diretório ainda existe, intocado.
Provavelmente, você deseja substituir o diretório pelo novo projeto como um submódulo:
git rm -r plugins/media
git submodule add url_to_repo plugins/media
git commit -m 'replaced plugins/media with a submodule'
Para obter mais informações sobre submódulos, consulte este capítulo no livro Pro Git: