En muchas ocasiones es necesario inicializar un repositorio GIT dentro de otro para versionar una parte concreta de un proyecto. Para conseguir esto, GIT incluye el concepto de “submódulos” pensado para este tipo de situación.

Anidar repositorios con GIT Submodules
Para inicializar un repositorio anidado dentro de otro mediante esta técnica, se debe lanzar el siguiente comando desde el directorio principal del proyecto:
git submodule add https://github.com/dabad-es/repositorio-anidado1 DirectorioAnidado1
Al lanzar el comando anterior, se inicializará el repositorio anidado en el directorio indicado (DirectorioAnidado1), desde el que ya podremos trabajar con normalidad con los comandos GIT habituales.
De forma adicional, se generará el fichero .gitmodules en el directorio principal que incluye información sobre los submódulos inicializados:
[submodule "DirectorioAnidado1"]
path = DirectorioAnidado1
url = https://github.com/dabad-es/repositorio-anidado1
Este fichero permitirá inicializar los submódulos del proyecto de forma sencilla mediante los siguientes comandos, cuando un nuevo usuario clone el repositorio principal:
git submodule init
git submodule update
Eliminar repositorio anidado
Por desgracia, GIT no ofrece una manera automática de eliminar repositorios anidados que ya están incluidos e inicializados en el repositorio principal de un proyecto, por lo que para eliminarlos será necesaria una eliminación manual mediante los siguientes pasos:
git submodule deinit DirectorioAnidado1
git rm DirectorioAnidado1
git commit -m "Eliminado repositorio anidado"
rm -rf .git/modules/DirectorioAnidado1
También es recomendable editar el fichero .gitmodules para eliminar de forma manual la referencia al repositorio anidado.