Inicializar un repositorio en el directorio actual.
git init
Clonar repositorio como submódulo. En este caso no queremos el repositorio completo por ello utilizamos --depth 1
.
Añadiremos el submódulo con git submodule add
. Esto generará un fichero .gitmodules
.
Establemos el nombre de la rama que queremos usar y el tipo de update con git config
.
git clone --depth 1 --reference submodulo -b main REPOSITORIO_MODULO submodulo
git submodule add REPOSITORIO_MODULO submodulo
Tras realizar la configuración del submódulo haremos el commit correspondiente
git commit -m"Add submodulo"
Ya podremos trabajar con normalidad con el repositorio. Si tenemos un repostorio remoto podemos hacer push de los cambios realizados
git push origin main
Cuando hay cambios en el repositorio remoto de nuestro submódulo podemos actualizarlo con los siguientes comandos.
git submodule update
git submodule update --remote
Esto creará una rama HEAD detached
que nos permitirá, por ejemplo, crear una rama a partir de ella git switch -c update-YYYYMMDD-HHMMSS
.
El comportación por defecto cuando se se hace un git submodule update --remote
es hacer un checkout pero podemos indicar en el comando si queremos hacer un merge
o un rebase
git submodule update --remote --merge
git submodule update --remote --rebase
Otra opción es configurar el comportamiento por defecto en el fichero .gitmodules
git config -f .gitmodules submodule.submodulo.branch NOMBRE_RAMA
git config -f .gitmodules submodule.submodulo.branch main
git config -f .gitmodules submodule.submodulo.update TIPO_ACTUALIZACION
git config -f .gitmodules submodule.submodulo.update merge
git config -f .gitmodules submodule.submodulo.update rebase
git config -f .gitmodules submodule.submodulo.update checkout
git clone REPOSITORIO_CON_SUBMODULOS
git submodule init
git submodule update