Réponses:
Regardez d'abord git help archive
. archive
est une commande git qui permet de créer des archives contenant uniquement des fichiers suivis git. Probablement ce que vous recherchez. Un exemple répertorié à la fin de la page de manuel:
git archive --format=tar --prefix=git-1.4.0/ v1.4.0 | gzip >git-1.4.0.tar.gz
Réponse la plus simple: ajouter --exclude-vcs
--exclude-vcs
Cela exclut tous les répertoires du système de contrôle de version
Personnellement j'utilise
tar -zcvf foo.tar.gz ./FOLDER_NAME --exclude-vcs
donc tout ce que vous avez à faire est d'ajouter le --exclude-vcs à la fin de la commande.
tar --exclude-vcs -zcvf foo.tar.gz ./FOLDER_NAME
Si vous souhaitez que l'archive inclue les fichiers suivis par git, mais pas le référentiel git lui-même ou tout fichier généré ou non suivi, utilisezgit archive
.
Si vous souhaitez spécifiquement exclure .git
mais inclure tout le reste, sous Linux ou FreeBSD ou OSX ou Cygwin, tar a une option simple pour exclure un répertoire:
tar -c --exclude .git -f - foo | gzip >foo.tgz
Avec GNU tar (c'est-à-dire sous Linux ou Cygwin), vous pouvez le raccourcir en tar czf foo.tgz --exclude .git foo
.
La manière POSIX de créer des archives est pax
.
pax -w -t -s '!.*/\.git$!!' -s '!.*/\.git/.*!!' foo | gzip >foo.tgz
git
compiles sur tout système où tar
n'est pas disponible? :-)
tar
il n'y a pas d' --exclude
option, comme OpenBSD (qui duplique certes l' s
option de pax , mais ce n'est pas une extension de syntaxe de commande tar commune).
Grâce à une réponse que j'ai obtenue sur l'une de mes questions, j'ai trouvé une autre solution. Donc, par souci d'exhaustivité, voici une solution utilisant find
:
find . -path './.git' -prune -o -print |
tar -czvf ../archive.tgz --no-recursion -T -
Et si vous souhaitez exclure des .git
dossiers possibles dans (sous) + dossier:
find . -path '*/.git' -prune -o -print |
tar -czvf ../archive.tgz --no-recursion -T -
Ce dernier peut également être atteint grâce à:
find . -type d -name '.git' -prune -o -print |
tar -czvf ../archive.tgz --no-recursion -T -
Assez pratique si vous pouvez utiliser les autres techniques de filtrage de find
, par exemple la date de modification, les autorisations,…
(Comme on suppose souvent des noms de fichiers bien formés, sinon vous devez utiliser des octets nuls comme séparateurs, ce qui peut signifier -print0
pour find
et --null
pour tar
si pris en charge.)