Il comando git che sarebbe il più vicino a quello che stai cercando sarebbe git archive
.
Vedi il progetto di backup che usa git : includerà in un archivio tutti i file (inclusi i sottomoduli se stai usandogit-archive-all
script)
È quindi possibile utilizzare tale archivio ovunque, restituendo solo file, nessuna .git
directory.
git archive --remote=<repository URL> | tar -t
Se hai bisogno di cartelle e file solo dal primo livello:
git archive --remote=<repository URL> | tar -t --exclude="*/*"
Per elencare solo le cartelle di primo livello di un repository remoto:
git archive --remote=<repository URL> | tar -t --exclude="*/*" | grep "/"
Nota: non funziona con GitHub (non supportato)
Quindi dovresti clonare (superficiale per accelerare il passaggio del clone) e quindi archiviare localmente :
git clone --depth=1 git@github.com:xxx/yyy.git
cd yyy
git archive --format=tar aTag -o aTag.tar
Un'altra opzione sarebbe quella di fare un clone superficiale (come menzionato di seguito), ma localizzando la cartella .git altrove.
git --git-dir=/path/to/another/folder.git clone --depth=1 /url/to/repo
La cartella repo includerebbe solo il file, senza .git
.
Nota: git --git-dir
è un'opzione del comandogit
, nongit clone
.
Aggiornamento con Git 2.14.X / 2.15 (Q4 2017): farà in modo di evitare l'aggiunta di cartelle vuote .
" git archive
", specialmente se usato con pathspec, ha memorizzato una directory vuota nel suo output, anche se Git stesso non lo fa mai.
Questo è stato risolto.
Vedi commit 4318094 (12 set 2017) di René Scharfe (``) .
Suggerito da: Jeff King ( peff
) .
(Unita da Junio C Hamano - gitster
- in commit 62b1cb7 , 25 set 2017)
archive
: non aggiungere directory vuote agli archivi
Mentre git non tiene traccia di directory vuote, git archive
può essere ingannato nel metterne alcune negli archivi.
Sebbene sia supportato dal database degli oggetti, non può essere rappresentato nell'indice e pertanto è improbabile che si verifichi in natura.
Dato che le directory vuote non sono supportate da git, non dovrebbero nemmeno essere scritte negli archivi.
Se è davvero necessaria una directory vuota, è possibile rintracciarla e archiviarla inserendovi un .gitignore
file vuoto .