gitaarik / git_submodules.md

0 Comments

¿por qué submódulos?

en Git puedes añadir un submódulo a un repositorio. Esto es, básicamente, arepository incrustado en su repositorio principal. Esto puede ser muy útil. Un par de ventajas de usar submódulos:

  • puede separar el código en diferentes repositorios.

    útil si tiene una base de código con componentes grandes, puede hacer que un componente sea un submódulo. De esta manera tendrás un registro de Git más limpio(las confirmaciones son específicas de un componente determinado).,

  • Puede agregar el submódulo a varios repositorios.

    útil si tiene varios repositorios que comparten los mismos componentes. Con este enfoque puede actualizar fácilmente estos componentes en todos los repositorios que los agregaron como submódulo.Esto es mucho más conveniente que copiar y pegar el código en los repositorios.

Basics

cuando agregas un submódulo en Git, no agregas el código de thesubmodule al repositorio principal, solo agregas información sobre thesubmodule que se agrega al repositorio principal., Esta información describe a qué commit apunta el submódulo. De esta manera, el código del submódulo no se actualizará automáticamente si se actualiza el repositorio del submódulo. Esto es bueno, porque su código podría no funcionar con la última confirmación del submódulo, evita un comportamiento inesperado.,

agregar un submódulo

Puede agregar un submódulo a un repositorio como este:

con la configuración predeterminada, esto comprobará el código del repositorioawesome_submodule.git al directorio path_to_awesome_submoduley agregará información al repositorio principal sobre este submódulo, que contiene el commit al que apunta el submódulo, que será el commit actual de la rama predeterminada (generalmente la ramamaster) en el momento en que se ejecute este comando.,

Después de esta operación, si haces un git status verás dos archivos en el Changes to be committed lista: .gitmodules archivo y la pathto el submódulo. Cuando confirmas y envías estos archivos, confirmas / envías el submódulo al origen.

obtener el código del submódulo

si una persona crea un nuevo submódulo, las otras personas del equipo deben iniciar este submódulo. Primero tienes que obtener la información sobre el submódulo, esto es recuperado por un normalgit pull., Si hay nuevos submódulos lo verás en la salida degit pull. Entonces tendrás que iniciarlos con:

esto extraerá todo el código del submódulo y lo colocará en el directorio para el que está configurado.

si ha clonado un repositorio que hace uso de submódulos, también debería ejecutar este comando para obtener el código del submódulo. Esto no se hace automáticamente por git clone.

Empujando actualizaciones en el submódulo

El submódulo es sólo un repositorio separado., Si quieres hacer cambios en él, deberías hacer los cambios en este repositorio y enviarlos como en un repositorio Git normal (simplemente ejecuta los comandos git en el directorio del módulo Sub). Sin embargo, también debe informar al repositorio principal que ha actualizado el repositorio del submódulo, y hacer que use la última confirmación del repositorio del submódulo. Porque si haces nuevas confirmaciones dentro de un submódulo, el repositorio principal seguirá apuntando a la confirmación anterior.,

así que, si quieres tener estos cambios en tu repositorio principal también, deberías decirle al repositorio principal que use la última confirmación del módulo Sub. ¿Cómo lo haces?

así que «has hecho cambios en el repositorio del submódulo» y los has confirmado en su repositorio. Si ahora hacemos un git status en el mainrepository, usted»ll ver que el submódulo está en la lista Changes not staged for commit y tiene el texto (modified content) detrás de él.Esto significa que el código del submódulo se comprueba en un commit diferente al que apunta el repositorio principal., Para hacer que el repositorio principal apunte a esta nueva confirmación, simplemente agrega este cambio con git add y luego confirma y empuja.

mantener sus submódulos actualizados

si alguien actualizó un submódulo, los otros miembros del equipo deberían actualizar el código de sus submódulos. Esto no se hace automáticamente porgit pull , porque con git pull solo recupera la información de que el submódulo está apuntando a otro compromiso, pero no actualiza el código del submódulo., Para actualizar el código de sus submódulos, debe ejecutar:

¿qué sucede si no ejecuta este comando?

si no ejecuta este comando, el código de su submódulo se comprueba en una confirmación Antigua. Al hacer git status verá thesubmodule en el Changes not staged for commit lista con el texto(modified content) detrás de él. Esto no se debe a que cambiaste el código del módulo, sino porque su código se comprueba en un compromiso diferente. Así que Git ve esto como un cambio, pero en realidad solo no actualizaste el código del submódulo., Así que si estás trabajando con submódulos, no olvides mantener tus submódulos actualizados.

haciéndolo más fácil para todos

a veces es molesto si olvidas iniciar y actualizar tus módulos. Afortunadamente, hay algunos trucos para hacerlo más fácil:

Esto actualizará los submódulos, y si aún no se han iniciado, los iniciará.

también puede tener submódulos dentro de submódulos., En este caso,»querrá actualizar/iniciar los submódulos recursivamente:

esto es mucho para escribir, por lo que puede hacer un alias:

ahora cada vez que ejecute git update, ejecutará una git pull anda git submodule update --init --recursive, actualizando así todo el código en su proyecto.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *