2010-12-21 39 views
29

Tengo un repositorio principal de git A y estamos usando fuentes de otro repositorio de git B en un subdirectorio de nuestro proyecto principal. Ahora sería bueno tener el repositorio B desprotegido dentro del repositorio A en este subdirectorio usado. Si alguien más clona el repositorio, por supuesto, debe obtener nuestro repositorio principal A y dentro de ese automáticamente el repositorio B.Repositorio de Git dentro del repositorio de Git

Déjame visualizar la estructura de directorios:

 
+ main_repository  - the root directory of the main Repository 
    + src     - directory containing the source 
    + foreignRepo  - this should be the root directory of another git repo 
    + binaries 
    + other 

Esto se debe también conocido en el repositorio remoto, sólo una copia local no me ayuda, porque otras personas miren esto y debe ser capaz de compilar todas las cosas.

+4

Debe mirar los submódulos de Git para sus necesidades: http://book.git-scm.com/5_submodules.html –

+1

Enlace actualizado: http://schacon.github.io/gitbook/5_submodules.html – twasbrillig

+0

Un blog post explica los pros y contras de cada enfoque [Submenú de Git: Subárbol de Git] (http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/). –

Respuesta

22

Querrá leer sobre Git submodules.

+1

O desde el libro de Pro Git: http://progit.org/book/ch6-6.html – bdukes

5

Puede anidar dos git repo sin usar submódulos. Supongamos que ChildRepo es un subdirectorio de ParentRepo, y ambos son repositorios de git.

+ ParentRepo 
    - ChildRepo 

Si agrega un archivo a ChildRepo, ParentRepo lo ignorará. Cuando lo compromete, se agregará a ChildRepo. No es posible agregar archivos dentro de ChildRepo a ParentRepo.

Más información: Nested GIT repo gotchas!

+0

Acabo de intentar anidar un repositorio infantil dentro de un repositorio principal. cuando agregué un archivo al repositorio secundario, hice 'cd ../' y 'git status' y el repositorio padre * no * ignoró el nuevo archivo. – chharvey

5

Uso git subtree en la versión Git 1.7.11 y superiores. git subtree is superior to git submodule porque:

  • La gestión de un flujo de trabajo simple es fácil. Las versiones anteriores de Git son compatibles (incluso antes de v1.5.2)
  • código del sub-proyecto está disponible justo después de la clonación del proyecto se hace súper
  • git subtree no requieren que los usuarios de su repositorio que aprender nada nuevo, que pueden pasar por alto el hecho de que está utilizando subárbol para gestionar dependencias
  • git subtree no añade nuevos archivos de metadatos como git submodule hace (como .gitmodule)
  • Contenido del subárbol pueden modificarse sin tener una copia repositorio separado de la dependencia en otro lugar

Además, si necesita detach a subtree of your existing repository into a new repository, git subtree split puede ayudarlo con eso.

+0

Esta respuesta fue publicada originalmente aquí: http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/ –