La commande git qui serait la plus proche de ce que vous recherchez le ferait git archive
.
Voir sauvegarde du projet qui utilise git : il inclura dans une archive tous les fichiers (y compris les sous-modules si vous utilisez le git-archive-all
script)
Vous pouvez ensuite utiliser cette archive n'importe où, en ne renvoyant que des fichiers, pas de .git
répertoire.
git archive --remote=<repository URL> | tar -t
Si vous avez besoin de dossiers et de fichiers uniquement du premier niveau:
git archive --remote=<repository URL> | tar -t --exclude="*/*"
Pour répertorier uniquement les dossiers de premier niveau d'un référentiel distant:
git archive --remote=<repository URL> | tar -t --exclude="*/*" | grep "/"
Remarque: cela ne fonctionne pas pour GitHub (non pris en charge)
Vous auriez donc besoin de cloner (peu profond pour accélérer l'étape de clonage), puis d'archiver localement :
git clone --depth=1 git@github.com:xxx/yyy.git
cd yyy
git archive --format=tar aTag -o aTag.tar
Une autre option serait de faire un clonage superficiel (comme mentionné ci-dessous), mais en localisant le dossier .git ailleurs.
git --git-dir=/path/to/another/folder.git clone --depth=1 /url/to/repo
Le dossier de dépôt n'inclurait que le fichier, sans .git
.
Remarque: git --git-dir
est une option de la commandegit
, non git clone
.
Mise à jour avec Git 2.14.X / 2.15 (Q4 2017): cela évitera d'ajouter des dossiers vides .
" git archive
", surtout lorsqu'il est utilisé avec pathspec, stockait un répertoire vide dans sa sortie, même si Git lui-même ne le fait jamais.
Cela a été corrigé.
Voir commit 4318094 (12 sept. 2017) de René Scharfe (``) .
Suggéré par: Jeff King ( peff
) .
(Fusionné par Junio C Hamano - gitster
- dans commit 62b1cb7 , 25 sept. 2017)
archive
: n'ajoutez pas de répertoires vides aux archives
Bien que git ne suive pas les répertoires vides, il git archive
peut être amené à en mettre dans des archives.
Bien que cela soit pris en charge par la base de données d'objets, il ne peut pas être représenté dans l'index et il est donc peu probable qu'il se produise à l'état sauvage.
Comme les répertoires vides ne sont pas pris en charge par git, ils ne doivent pas non plus être écrits dans des archives.
Si un répertoire vide est vraiment nécessaire, il peut être suivi et archivé en y plaçant un .gitignore
fichier vide .