Git Clone: ​​solo los files, por favor?

Quiero clonar un repository GIT y NO terminar con un directory .git . En otras palabras, solo quiero los files. ¿Hay alguna forma de hacer esto?

git clone --no-checkout hizo exactamente lo contrario de lo que quiero (me dio solo el directory .git ).

Estoy tratando de hacer eso para un repository remoto , no local, lo que significa que no es un duplicado de " Cómo hacer un" git export "(como" svn export ") " (aunque la solución podría terminar siendo el mismo).

El command git que sería el más cercano de lo que estás buscando sería por git archive .
Ver el proyecto de copy de security que usa git : includeá en un file todos los files (incluidos los submodules si está usando el script git-archive-all )

Luego puede usar ese file en cualquier lugar, devolviéndole solo files, sin directory .git .

 git archive --remote=<repository URL> @ | tar -t 

Si necesita carpetas y files solo desde el primer nivel:

 git archive --remote=<repository URL> @ | tar -t --exclude="*/*" 

Para enumerar solo las carpetas de primer nivel de un repository remoto:

 git archive --remote=<repository URL> @ | tar -t --exclude="*/*" | grep "/" 

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 includeía solo el file, sin .git .

Nota: git --git-dir es una opción del command git , no git clone .


Actualice con Git 2.14.X / 2.15 (Q4 2017): se asegurará de evitar agregar carpetas vacías .

" git archive ", especialmente cuando se usa con pathspec, almacena un directory vacío en su salida, incluso aunque Git nunca lo haga.
Esto ha sido arreglado.

Ver commit 4318094 (12 Sep 2017) por René Scharfe (“) .
Sugerido por: Jeff King ( peff ) .
(Fusionada por Junio ​​C Hamano – gitster – in commit 62b1cb7 , 25 de septiembre de 2017)

archive : no agregue directorys vacíos a los files

Mientras que git no rastrea los directorys vacíos, el git archive puede ser engañado para poner algunos en los files.
Si bien es compatible con la database de objects, no se puede representar en el índice y, por lo tanto, es poco probable que ocurra en la naturaleza.

Como los directorys vacíos no son compatibles con git, tampoco deberían escribirse en los files.
Si realmente se necesita un directory vacío, se puede rastrear y archivar colocando un file .gitignore vacío en él.

 git archive --format=tar --remote=<repository URL> HEAD | tar xf - 

tomado de aquí

puede crear un clon superficial para get solo las últimas revisiones:

  git clone --depth 1 git://url 

luego, simplemente elimine el directory .git o use git archive para exportar su tree.

¿Por qué no realizar un clon y luego eliminar el directory .git para que solo tenga una copy de trabajo desnuda?

Editar: ¿O de hecho por qué usar clon? Es un poco confuso cuando dices que quieres un repository git pero sin un directory .git . Si quiere decir que solo quiere una copy de algún estado del tree, entonces ¿por qué no hacer cp -R en el shell en lugar del clon git y luego eliminar el .git después?

Parece que solo quieres una copy del código fuente. Si es así, ¿por qué no simplemente copyr el directory y excluir el directory .git de la copy?