O comando git que seria o mais próximo do que você está procurando seria git archive.
Veja o projeto de backup que usa o git : ele incluirá em um arquivo todos os arquivos (incluindo submódulos se você estiver usando o git-archive-allscript)
Você pode usar esse arquivo em qualquer lugar, devolvendo apenas arquivos, sem .gitdiretório.
git archive --remote=<repository URL> | tar -t
Se você precisar de pastas e arquivos apenas do primeiro nível:
git archive --remote=<repository URL> | tar -t --exclude="*/*"
Para listar apenas as pastas de primeiro nível de um repositório remoto:
git archive --remote=<repository URL> | tar -t --exclude="*/*" | grep "/"
Nota: isso não funciona no GitHub (não suportado)
Portanto, você precisará clonar (superficialmente para acelerar a etapa de clone) e arquivar localmente :
git clone --depth=1 git@github.com:xxx/yyy.git
cd yyy
git archive --format=tar aTag -o aTag.tar
Outra opção seria fazer um clone superficial (como mencionado abaixo), mas localizando a pasta .git em outro lugar.
git --git-dir=/path/to/another/folder.git clone --depth=1 /url/to/repo
A pasta repo incluiria apenas o arquivo, sem .git.
Nota: git --git-dir é uma opção do comandogit , não git clone.
Atualização com o Git 2.14.X / 2.15 (quarto trimestre de 2017): evitará adicionar pastas vazias .
" git archive", especialmente quando usado com o pathspec, armazenava um diretório vazio em sua saída, mesmo que o próprio Git nunca o faça.
Isso foi corrigido.
Veja commit 4318094 (12 de setembro de 2017) de René Scharfe (``) .
Sugerido por: Jeff King ( peff) .
(Mesclado por Junio C Hamano - gitster- na confirmação 62b1cb7 , 25 de setembro de 2017)
archive: não adicione diretórios vazios aos arquivos
Enquanto o git não rastreia diretórios vazios, git archivepode ser levado a colocar alguns em arquivos.
Embora isso seja suportado pelo banco de dados de objetos, ele não pode ser representado no índice e, portanto, é improvável que ocorra na natureza.
Como diretórios vazios não são suportados pelo git, eles também não devem ser gravados em arquivos.
Se um diretório vazio for realmente necessário, ele poderá ser rastreado e arquivado colocando um .gitignorearquivo vazio nele.