Si je tar un dossier qui est un référentiel git, puis-je le faire sans inclure les .git
fichiers associés? Sinon, comment pourrais-je procéder via une commande?
16
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
donc tout ce que vous avez à faire est d'ajouter le --exclude-vcs à la fin de la commande.
la source
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, utilisez
git 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: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
.la source
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
:Et si vous souhaitez exclure des
.git
dossiers possibles dans (sous) + dossier:Ce dernier peut également être atteint grâce à:
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
pourfind
et--null
pourtar
si pris en charge.)la source