2011-08-18 4 views
7

Sono nuovo di Git. Voglio clonare un ampio repository remoto diciamo xyzcodebase. La struttura del repository è come se avessi cartelle src per diverse aree funzionali come mostrato di seguito.Come clonare selettivamente un repository git

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

Io lavoro su Functional area 2 quindi, mentre la clonazione Non voglio codice Functional area 1 (formato grande) che farà risparmiare un sacco del mio tempo. In modo che dopo la clonazione avrò solo il codice sorgente Functional area 2 nel mio repository locale.

Esiste un modo per eseguire tale clonazione selettiva del repository git?

Grazie in anticipo per il vostro aiuto

+0

vedere questo thread: https://stackoverflow.com/questions/600079/how-do-i-clone-a-subdirectory-only-of-a-git-repository – DoronG

risposta

5

No, non c'è modo per clonare una sola directory. Git memorizza la cronologia come modifiche all'intero repository invece di memorizzare solo sottoalberi come SVN.

Se il progetto contiene più funzionalità, allora forse sarebbe meglio suddividerlo in alcuni sottoprogetti, con repository diversi, e quindi includere altri repository come sottomoduli nel progetto principale. Ma dipende da come è organizzato il tuo progetto.

+0

Grazie per la risposta. Se non clone, è possibile recuperare solo una directory in un repository git vuoto? –

+0

@Venam Ancora no, ma non sarebbe necessario. Una volta ottenuto l'intero repository, il recupero di un'area o dell'altra sarà un'operazione relativamente piccola. – meagar

+0

@Vaman Non proprio, sfortunatamente. 'clone' è solo un modo elegante per dire' git init, git remote add, git fetch', quindi devi ancora aspettare il trasferimento dell'intero repository. Puoi recuperare una copia superficiale ('- -depth param) del repository, ma senza la cronologia completa non puoi eseguire il commit e push su remoto, quindi è utile solo per l'implementazione o la revisione del codice, non per lo sviluppo (a meno che tu non invii le tue modifiche come patch a qualcuno che ha repository completo) – MBO

0

Questa è una soluzione hacky che potrebbe, in casi particolari, essere d'aiuto per il tuo problema. In particolare, se siete interessati solo in un singolo file si può semplicemente scaricarlo dalla console (in Unix) tramite wget: wget https://raw.githubusercontent.com/GITHUBUSER/REPOSITORY/master/file.ending

è possibile ottenere il link di un file specifico navigando ad essa in github e quindi fare clic su "crudo".