Dividindo um subdiretório de projeto em um novo repositório Git

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/mediae deseja isso em um repositório independente:

git subtree split -P plugins/media -b media

Isso colocará todos os commits relacionados a plugins/mediaem 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 mediabranch 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/mediadiretó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:

http://git-scm.com/book/en/Git-Tools-Submodules