Repositorio Git dentro de otro repository git

Tengo la siguiente estructura de directorys:

  • g1 /
    • .git
    • un
    • segundo
    • do/
      • .git
      • re
      • mi

Como puede ver, tengo el repository "c" dentro del repository "g1". Cuando uso el siguiente command:

git clone g1 g2

Solo obtengo la siguiente estructura de directorys:

  • g1 /
    • .git
    • un
    • segundo
    • do/

El directory "c" permanece vacío. ¿Algunas ideas?

Los submodules (discutidos en el Pro Git Book ) ayudan a administrar repositorys nesteds dentro de un repository principal:

Los submodules permiten que los repositorys extranjeros se incrusten dentro de un subdirectory dedicado del tree fuente, siempre apuntando a una confirmación particular.

No deben confundirse con mandos a distancia, que están destinados principalmente a las twigs del mismo proyecto; los submodules están destinados a diferentes proyectos que le gustaría hacer parte de su tree fuente, mientras que el historial de los dos proyectos sigue siendo completamente independiente y no puede modificar el contenido del submodule desde el proyecto principal.

Los submodules mantienen su propia identidad; el soporte del submodule simplemente almacena la location del repository del submodule y confirma la identificación, por lo que otros desarrolladores que clonan el superproyecto pueden clonar fácilmente todos los submodules en la misma revisión.

Git 2.5+ (Q2 2015) será un poco más preciso en la forma en que presenta el submodule.
Como un submodule está registrado como gitlink ( una input especial en el índice ), eso explica por qué ' c ' está vacío cuando se clona el repository principal.
Ver también "el git submodule verifica el mismo compromiso ".
Necesita una git submodule update --init para completar ' c '.

Eso ahora está más claramente documentado.

Ver commit ec48a76 (27 de mayo de 2015) por Stefan Beller ( stefanbeller ) .
(Fusionado por Junio ​​C Hamano – gitster – in commit 7df5c97 , 11 de junio de 2015)

submodule doc: reorderar párrafos introductorios

Es mejor comenzar la página de manual con una descripción de qué son realmente los submodules, en lugar de decir lo que no son.

La página del manual del git submodule ahora (junio de 2015) comienza con:

Un submodule le permite mantener otro repository de Git en un subdirectory de su repository.
El otro repository tiene su propio historial, que no interfiere con el historial del repository actual.
Esto se puede usar para tener dependencies externas, como bibliotecas de terceros, por ejemplo.

Sin embargo, al clonar o extraer un repository que contenga submodules, estos no se verificarán de manera pnetworkingeterminada; los subcommands ' init ' y ' update ' mantendrán los submodules prestados y en la revisión apropiada en su tree de trabajo .