2013-06-27 18 views
16

sto usando git-archive per archiviare una sottodirectory in un repo git, in questo modo:git-archivio una sottodirectory -

git archive -o ../subarchive.zip HEAD subdir/* 

Tuttavia l'archivio risultante mantiene la struttura sottodirectory/directory, vale a dire il contenuto sono:

subdir/ 
    whatever.js 
    morestuff.js 

Quando effettivamente voglio what.js e morestuff.js nella directory principale dell'archivio.

Come si fa? Grazie.

risposta

25

Potete farlo in questo modo:

git archive -o ../subarchive.zip HEAD:subdir 

Tra l'altro, un modo semplice per giocare con il comando e vedere che cosa genererà è se lo si utilizza in questa forma:

git archive --format=tar HEAD:subdir | tar t 
git archive --format=tar HEAD subdir | tar t 
# ... and so on ... 

Una volta visto ciò che stai cercando, puoi cambiare il formato e utilizzare il flag -o per creare effettivamente l'archivio.

+0

Esiste un modo per farlo in modo efficiente per i repository remoti, ad es. recuperare una sola dir/una revisione di un repo gigantesco che non è pratico da clonare? Ho provato '--remote' ma era ridicolmente lento. –

+0

Funziona, fantastico. Stavo cercando di capire quale parte della documentazione GIT parlava di questo, ma non potevo. Puoi elaborare dei pls? – Meglio

+0

@Meglio 'git archive --help', fammi sapere se non riesci a trovare qualcosa (e quindi ti prego di essere il più specifico possibile) – janos