Los submódulos son la manera más fácil de lograr esto.
Existen dos formas comunes de trabajar con submódulos: agregar nuevos e inicializar los ya existentes.
Adición de nuevos cartuchos de
Desde la raíz de su carrera repositorio local:
git submodule add <repository> external/engage.iphone
.
El comando add
es para cuando inicialmente está agregando un submódulo al repositorio, a diferencia de cuando ha clonado un repositorio con los submódulos existentes). Agrega otro repositorio que puede estar en una ruta local o remota (recuerde que otros desarrolladores necesitan acceso a esto si publica su repositorio) en el archivo .gitmodules en su raíz del repositorio, luego clona el repositorio en la ubicación que especificó; external/engage.iphone
en el ejemplo anterior. En esta etapa, tiene los archivos del sub-repositorio en su sistema y está listado como un submódulo en el archivo .gitmodules, la configuración de sus repositorios locales.
Sin embargo, no puede ser que la adición de los submódulos mismo ...
Inicialización submódulos existentes
cosas cambian un poco si está clonando un repositorio que ya tiene submódulos añadieron a la misma. En esta situación, el archivo .gitmodules tendrá los submódulos enumerados en él con ubicaciones para recuperarlos, pero su configuración de repositorio local no sabe nada sobre ellos y los archivos reales aún no existen en su sistema. Lo primero que necesita para inicializar los submódulos:
git submodule init
Esto ejecutará a través de los repositorios que figuran en sus .gitmodules y añadirlos a su .git/config. Git sabe ahora sobre el repositorio pero en realidad no ha clonado todavía, por lo ejecute:
git submodule update
se puede ejecutar este comando en cualquier momento para actualizar los submódulos registrados, es decir clon de los desaparecidos.
git submodule sync <submodule>
Ejecutar este para actualizar todos los submódulos de la cabeza a distancia, a menos que especifique cometer un específico cuando has añadido el submódulo! Especificar un submódulo específico solo sincronizará ese.
Al estilo de Git el comando init
se puede combinar con el update
para ahorrar tiempo:
git submodule update --init
.
Por supuesto, siempre puede actualizar manualmente sus .gitmodules y .git/config una vez que haya aprendido el diseño que utilizan (similar a las secciones de sucursal y remotas en la configuración).
Todos los detalles se pueden encontrar en la página del manual (kernel.org version).
Gracias. Me aparece este error ahora: "No se encontró ningún mapeo de submódulos en .gitmodules para el camino 'engage.iphone/Contrib/json-framework'" ... ¿alguna idea? –
... esto sucede cuando ejecuto "git submodule init" –
@SteveN ¿Cómo ejecutó el comando add? ¿Y qué puso en tus .gitmodules? – ghickman