Difference between revisions of "Git, Submodules"
(6 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Los ''submodules'' son una forma de importar proyectos de Git adentro de otro proyecto Git. Al hablar de ''submodule'' se hace referencia al proyecto que está adentro de otro. | Los ''submodules'' son una forma de importar proyectos de Git adentro de otro proyecto Git. Al hablar de ''submodule'' se hace referencia al proyecto que está adentro de otro. | ||
==Importante== | |||
===Contenedor y contenido actúan independientemente=== | |||
El repositorio y el ''submodule'' actúan como repositorios independientes aunque el ''submodule'' esté adentro del repositorio. Esto es importante ya que si se modifica el ''submodule'' hay que tratar esos cambios en ese repositorio. Además, al cambiar el ''submodule'' el repositorio contenedor tiene que se modificado para que sepa que el ''submodule'' cambió. | |||
===Referencia a un punto de la historia del ''submodule''=== | |||
Al crear un ''submodule'' se guarda la referencia a qué commit se usa, es decir que si se actualiza el proyecto que corresponde al ''submodule'', este no se actualiza directamente en un proyecto que lo use como ''submodule''. | |||
==Agregar un ''submodule''== | |||
<source lang="bash">git submodule add [remote] [ubicación adentro del proyecto]</source> | |||
==Clonar el repositorio y sus submodulos== | |||
<source lang="bash"> | |||
git clone --recursive -j8 [url repositorio] | |||
# -j8 obtiene hasta 8 repositorios en paralelo para hacer la carga más expedita | |||
</source> | |||
==Importar los submodulos de un repositorio ya clonado== | |||
<source lang="bash"> | |||
git submodule update --init --recursive | |||
</source> | |||
==Configuraciones Importantes== | ==Configuraciones Importantes== | ||
Line 5: | Line 26: | ||
Al momento de hacer <code>git status</code>, por defecto no se muestra información de los módulos, para esto se puede configurar globalmente que se muestre un resumen de los submodulos: | Al momento de hacer <code>git status</code>, por defecto no se muestra información de los módulos, para esto se puede configurar globalmente que se muestre un resumen de los submodulos: | ||
<source lang="bash">git config --global status.submoduleSummary true</source> | <source lang="bash">git config --global status.submoduleSummary true</source> | ||
===Más información en diff=== | |||
<source lang="bash">git config --global diff.submodule log</source> | |||
==Referencias== | ==Referencias== | ||
* [https://medium.com/@porteneuve/mastering-git-submodules-34c65e940407 Mastering Git submodules - Medium] | * [https://medium.com/@porteneuve/mastering-git-submodules-34c65e940407 Mastering Git submodules - Medium] | ||
[[Category:Git]] |
Latest revision as of 02:12, 14 October 2017
Los submodules son una forma de importar proyectos de Git adentro de otro proyecto Git. Al hablar de submodule se hace referencia al proyecto que está adentro de otro.
Importante
Contenedor y contenido actúan independientemente
El repositorio y el submodule actúan como repositorios independientes aunque el submodule esté adentro del repositorio. Esto es importante ya que si se modifica el submodule hay que tratar esos cambios en ese repositorio. Además, al cambiar el submodule el repositorio contenedor tiene que se modificado para que sepa que el submodule cambió.
Referencia a un punto de la historia del submodule
Al crear un submodule se guarda la referencia a qué commit se usa, es decir que si se actualiza el proyecto que corresponde al submodule, este no se actualiza directamente en un proyecto que lo use como submodule.
Agregar un submodule
git submodule add [remote] [ubicación adentro del proyecto]
Clonar el repositorio y sus submodulos
git clone --recursive -j8 [url repositorio]
# -j8 obtiene hasta 8 repositorios en paralelo para hacer la carga más expedita
Importar los submodulos de un repositorio ya clonado
git submodule update --init --recursive
Configuraciones Importantes
Configuración para git status
Al momento de hacer git status
, por defecto no se muestra información de los módulos, para esto se puede configurar globalmente que se muestre un resumen de los submodulos:
git config --global status.submoduleSummary true
Más información en diff
git config --global diff.submodule log