2011-08-18 18 views
7

Soy nuevo en Git. Quiero clonar un gran repositorio remoto, digamos xyzcodebase. La estructura de repo es como si tuviera carpetas src para diferentes áreas funcionales, como se muestra a continuación.Cómo clonar selectivamente un repositorio git

xyzcodebase 
| 
|__ Func area 1 
| 
|__ Func area 2 

Yo trabajo en Functional area 2 por lo tanto, mientras que la clonación no quiero código de Functional area 1 (tamaño grande) que permitirá ahorrar una gran cantidad de mi tiempo. Entonces, después de la clonación tendré solo el código fuente Functional area 2 en mi repositorio local.

¿Hay alguna manera de lograr esa clonación selectiva del repositorio de git?

Gracias de antemano por su ayuda

+0

ver este hilo: https://stackoverflow.com/questions/600079/how-do-i-clone-a-subdirectory-only-of-a-git-repository – DoronG

Respuesta

5

No, no hay manera única para clonar un directorio. Git almacena el historial como cambios en el repositorio completo en lugar de almacenar solo subárboles como SVN.

Si su proyecto contiene múltiples funcionalidades, entonces tal vez sería mejor dividirlo en algunos subproyectos, con diferentes repositorios, y luego incluir otros repositorios como submódulos en el proyecto maestro. Pero depende de cómo esté organizado tu proyecto.

+0

Gracias por su respuesta. Si no se clona, ​​¿es posible buscar solo un directorio en un repositorio vacío de git? –

+0

@Venam Todavía no, pero no es necesario. Una vez que tenga todo el repositorio, buscar una área u otra será una operación relativamente pequeña. – meagar

+0

@Vaman No realmente, desafortunadamente. 'clone' es simplemente una forma elegante de decir' git init, git remote add, git fetch', por lo que aún tienes que esperar a que se transfiera todo el repositorio. Puede recuperar una copia superficial ('--depth' param) del repositorio, pero luego sin el historial completo no puede enviar y enviar a remoto, por lo que solo es útil para implementación o revisión de código, no para desarrollo (a menos que envíe tus cambios como parches para alguien que tiene repositorio completo) – MBO

0

Esta es una solución hacky que podría ayudar en casos especiales con su problema. En concreto, si usted está interesado sólo en un único archivo puede simplemente descargarlo de la consola (en Unix) a través de wget: wget https://raw.githubusercontent.com/GITHUBUSER/REPOSITORY/master/file.ending

Usted puede obtener el enlace de un archivo específico accediendo a él por en GitHub y luego haga clic en "crudo".

Cuestiones relacionadas