tag submodulos submodule ejemplos git version-control

submodulos - Empuje el contenido sub-repo juntos(sin usar los submódulos de git)



git submodule (2)

El main-repo y el sub-repo se rastrean en el repositorio principal ? es decir, mientras se encuentra en el directorio principal-repo ejecutando los comandos de git , ¿hace git add en los archivos tanto del repositorio principal como del sub-repo ?

En caso afirmativo, en el repositorio principal, usted se git commit con git commit para rastrear el repositorio principal y el repositorio secundario . Y después del git commit , debes hacer git push en el repositorio principal para enviar el main-repos y el sub-repo al main-repo upstream. De esta forma, está rastreando tanto el repositorio principal como el sub-repo al repositorio principal reverso .

Pero esto no rastreará automáticamente el sub-repo con su sub-repo en sentido ascendente. Debe hacer explícitamente el cd sub-repo y luego git add , git commit y git push en el sub-repo para rastrear el sub-repo con su sub-repo de subida.

Para una mejor comprensión, recomiendo usar una Visual Git Tool como Smartgit.

  1. http://www.syntevo.com/smartgit/

Dentro de un repositorio principal, hay otro repositorio (que podría haberse descargado de github, es decir), lo llamo sub-repo.

No quiero usar la función de submódulos de Git.

El sub-repo podría ser comprometido y llevado a su propio control remoto eventualmente. Pero me gustaría continuar trabajando en el repositorio principal, ignorando esa carpeta (sub-repo) en realidad es un repositorio git. Pero me gustaría rastrear el contenido sub-repo del repositorio principal (estaba estudiando las consecuencias aquí ).

Tuve éxito en este empeño hasta el punto en que presioné las confirmaciones de repo principales, cuando noté que el contenido de sub-repo no estaba unido. Aunque lo agregué al comprometerme.

Al usar git ls-files , veo que la carpeta (sub-repo) está allí, pero los archivos no están en la lista, así que no estoy seguro de que el contenido del sub-repo esté siendo rastreado por main-repo.

Usando git ls-tree --full-tree -r HEAD , veo que el sub-repo se llama commit , en lugar de blob como es el caso de otros archivos del main-repo.

¿Es posible impulsar el contenido del sub-repo?


Intenté y los archivos en sub-repo se pueden juntar con main-repo. Los siguientes pasos pueden ser referidos:

  1. Git bash en main-repo local
  2. Utilice git clone <URL for sub-repo> para clonar el sub-repo en main-repo
  3. Usa el git status , encontrarás un sub-repo de carpeta sin seguimiento, luego usa git add sub-repo/ y git commit para rastrear
  4. Agregue un archivo, como new.txt en el directorio /main-repo/sub-repo
  5. Utilice git add sub-repo/new.txt y git commit ( nota: se ejecuta en el directorio /main-repo )
  6. Use git push para enviar al repositorio principal remoto, y puede encontrar el archivo new.txt también allí. También puedes usar git ls-files para encontrar el archivo

Nota : Puede haber notado que el modo es 160000 si usamos git add sub-repo y git commit , y el modo es 100644 si usamos git add sub-repo/ y git commit . 1600000 es Gitlink, significa que registra una confirmación como una entrada de directorio en lugar de un subdirectorio o un archivo, algo así como los submódulos. 100644 significa archivo regular no ejecutable. Entonces puede tratar sub-repo como una carpeta.