El comando git que sería el más cercano de lo que está buscando sería por git archive.
Consulte el proyecto de copia de seguridad que utiliza git : incluirá en un archivo todos los archivos (incluidos los submódulos si está utilizando el git-archive-allscript)
Luego puede usar ese archivo en cualquier lugar, devolviéndole solo archivos, no .gitdirectorio.
git archive --remote=<repository URL> | tar -t
Si necesita carpetas y archivos solo desde el primer nivel:
git archive --remote=<repository URL> | tar -t --exclude="*/*"
Para enumerar solo las carpetas de primer nivel de un repositorio remoto:
git archive --remote=<repository URL> | tar -t --exclude="*/*" | grep "/"
Nota: eso no funciona para GitHub (no compatible)
Por lo tanto, necesitaría clonar (poco profundo para acelerar el paso de clonación) y luego archivar localmente :
git clone --depth=1 git@github.com:xxx/yyy.git
cd yyy
git archive --format=tar aTag -o aTag.tar
Otra opción sería hacer un clon superficial (como se menciona a continuación), pero ubicando la carpeta .git en otro lugar.
git --git-dir=/path/to/another/folder.git clone --depth=1 /url/to/repo
La carpeta repo incluiría solo el archivo, sin .git.
Nota: git --git-dir es una opción del comandogit , no git clone.
Actualización con Git 2.14.X / 2.15 (Q4 2017): se asegurará de evitar agregar carpetas vacías .
" git archive", especialmente cuando se usa con pathpec, almacenaba un directorio vacío en su salida, aunque Git nunca lo hace.
Esto ha sido arreglado.
Ver commit 4318094 (12 de septiembre de 2017) por René Scharfe (``) .
Sugerido por: Jeff King ( peff) .
(Fusionada por Junio C Hamano - gitster- en commit 62b1cb7 , 25 sep 2017)
archive: no agregue directorios vacíos a los archivos
Si bien git no rastrea los directorios vacíos, git archivepuede ser engañado para poner algunos en archivos.
Si bien eso es compatible con la base de datos de objetos, no se puede representar en el índice y, por lo tanto, es poco probable que ocurra en la naturaleza.
Como los directorios vacíos no son compatibles con git, tampoco deberían escribirse en archivos.
Si realmente se necesita un directorio vacío, se puede rastrear y archivar colocando un .gitignorearchivo vacío en él.