Risposte:
Dai un'occhiata prima a git help archive. archiveè un comando git che consente di creare archivi contenenti solo file tracciati da git. Probabilmente quello che stai cercando. Un esempio elencato alla fine della pagina man:
git archive --format=tar --prefix=git-1.4.0/ v1.4.0 | gzip >git-1.4.0.tar.gz
Risposta più semplice: Aggiungi --exclude-vcs
--exclude-VCS
Ciò esclude tutte le directory del sistema di controllo della versione
Personalmente io uso
tar -zcvf foo.tar.gz ./FOLDER_NAME --exclude-vcs
quindi tutto ciò che devi fare è aggiungere --exclude-vcs alla fine del comando.
tar --exclude-vcs -zcvf foo.tar.gz ./FOLDER_NAME
Se si desidera che l'archivio includa i file monitorati da git, ma non il repository git stesso o qualsiasi file generato o altrimenti non tracciato, utilizzaregit archive .
Se vuoi specificamente escludere .gitma includere tutto il resto, sotto Linux o FreeBSD o OSX o Cygwin, tar ha una semplice opzione per escludere una directory:
tar -c --exclude .git -f - foo | gzip >foo.tgz
Con GNU tar (cioè sotto Linux o Cygwin), puoi accorciarlo a tar czf foo.tgz --exclude .git foo.
Il modo POSIX di creare archivi è pax.
pax -w -t -s '!.*/\.git$!!' -s '!.*/\.git/.*!!' foo | gzip >foo.tgz
gitcompila su qualsiasi sistema in cui tarnon è disponibile? :-)
tarnon esiste alcuna --excludeopzione, come OpenBSD (che ammette duplicare l' sopzione di pax , ma non è un'estensione di sintassi del comando tar comune).
Grazie a una risposta che ho ricevuto su una delle mie domande ho trovato un'altra soluzione. Quindi, per completezza, ecco una soluzione che utilizza find:
find . -path './.git' -prune -o -print |
tar -czvf ../archive.tgz --no-recursion -T -
E se vuoi escludere possibili .gitcartelle all'interno di (sotto) + cartella:
find . -path '*/.git' -prune -o -print |
tar -czvf ../archive.tgz --no-recursion -T -
L'ultimo può essere raggiunto anche attraverso:
find . -type d -name '.git' -prune -o -print |
tar -czvf ../archive.tgz --no-recursion -T -
Molto utile se è possibile utilizzare le altre tecniche di filtro di find, ad esempio data di modifica, autorizzazioni, ...
(Come spesso si presuppongono nomi di file ben formati, altrimenti è necessario utilizzare byte null come separatori che possono significare -print0per finde --nullper tarse supportati.)