2011-01-11 30 views

Respuesta

55

Parece que quiere usar Git submodules.

Git soluciona este problema utilizando submódulos. Los submódulos le permiten mantener un repositorio de Git como un subdirectorio de otro repositorio de Git. Esto le permite clonar otro repositorio en su proyecto y mantener sus compromisos separados.

+5

No exactamente: no empujará *** todo el contenido *** de repoA: solo A más una referencia a B. Pero no critico su respuesta, me apresuré a escribir casi igual cuando estoy -leer la pregunta del OP;) – VonC

+0

Este es prácticamente el caso de uso de los submódulos. REPO-A y REPO-B son tratados como repositorios git por derecho propio, con sus propios commits, orígenes, historial, etc. –

+0

así que si estoy leyendo ese derecho, ¿puedo revisar independientemente un repositorio de submodule-d completamente fuera de ¿En el que lo encuentro? ¿Cómo tomaría un repositorio ya existente y lo mencionaría como un submódulo en otro proyecto? – JohnO

47

Siempre he usado enlaces simbólicos para mantener dos repos distintos y distintos.

+3

sobre cuán confusos parecen ser los submódulos de git y el subárbol de git, esta es una respuesta válida. –

+0

Esto también es muy útil para ensamblar una aplicación desde varios repositorios remotos – GeraldScott

+7

Para mantener dos repositorios separados y distintos, ¿no estaría bien mantener el repositorio B en el repositorio A y simplemente agregar el repositorio B al repositorio '.gitignore' de A? –

15

Sí, puede hacer exactamente lo que está pidiendo con la jerarquía de archivos que dibujó. Repo-B será independiente y no tendrá conocimiento de Repo-A. Repo-A hará un seguimiento de todos los cambios en sus propios archivos y los archivos de Repo-B.

Sin embargo, no recomendaría hacer esto. Cada vez que cambie archivos y realice commits en Repo-B, tendrá que comprometerse en Repo-A. La ramificación en Repo-B interferirá con Repo-A y la bifurcación en Repo-A no funcionará (problemas para eliminar carpetas, etc.). Los submódulos son definitivamente el camino a seguir.

+26

¿No puede simplemente agregar REPO-B a /REPO-A/.gitignore? – mikkelbreum

+2

@mikkelbreum Tuve la misma idea. Actualmente estamos utilizando subverion para nuestro proyecto principal y usamos un repositorio git en una de las subcarpetas. Con SVN acabo de agregar la carpeta con el git repo a la propiedad svn: ignore y me preguntaba si puedo hacer lo mismo con git. – 2ndkauboy

+1

Bueno, no puedo ver por qué agregar un repositorio de git anidado a la lista de ignorar del repositorio padre no debería funcionar ... Pero al mismo tiempo tengo la sensación de que debe haber algo que no haya pensado, ya que este enfoque rara vez se ve sugerido, y muchas personas desalientan los repositorios git anidados. – mikkelbreum