Una de las formas más eficientes de gestionar la adhesión de subproyectos y librerías en Git, es mediante el uso de submódulos que nos permiten trabajar con ellos dentro de un proyecto, o de manera desacoplada con cada submódulo como si fuera un repositorio Git.
La creación de un submódulo dentro de un proyecto se limita a ejecutar el siguiente comando dentro del directorio deseado en el que se quiera añadir el submódulo, dentro de la raíz del proyecto:
git submodule add http://porject-url
Donde la URL después del comando "add" indica la localización del proyecto Git que queremos montar como submódulo.
Una vez tengamos el submódulo añadido podemos gestionarlo como si fuera un proyecto Git independiente, moviéndonos hasta la raíz del submódulo, o ejecutar comandos en lote sobre los submódulos de un proyecto.
Si deseas clonar el repositorio e incluir en el clonado los submódulos, deberás hacer un clone recursivo:
git clone --recursive http://porject-url
Donde deberás especificar la URL del proyecto.
Si no realizas el clonado recursivo, del proyecto deberás realizar una inicialización manual de los submódulos:
git submodule init git submodule update
Por otro, lado, igual que es interesante crear un submódulo dentro del un proyecto, lo es también eliminar un submódulo de un proyecto. Por ejemplo porque queramos moverlo de sitio o porque queramos prescindir de él. Para ello os explicaré la forma de hacerlo borrando el repositorio, que puede servir para conseguir ambos objetivos.
Escontrándonos en la raíz del proyecto que contiene el submódulo que queremos borrar ejecutamos los siguientes comandos:
# Desinicializamos el submódulo de la lista de submódulos git submodule deinit path/submodule # Borramos físicamente el directorio del submódulo git rm path/submodule # Eliminar cache del árbol de trabajo de Git git rm --cached path/submodule # Eliminamos la meta información del submódulo que por alguna razón no borra Git rm -rf .git/modules/path/submodule
Con las sucesión de comandos detallados, desvincularás totalmente el submódulo deseado y eliminarás los archivos innecesarios.
De esta forma queda cubierta la gestión de submódulos Git en su carácter más esencial, siendo una herramienta muy potente a la hora de gestionar las dependencias de un proyecto, y a la vez facilitando la actualización de las mismas.