Git clona solo un subdirectory, en la raíz del directory actual

Tengo algunas carpetas en mi repo de Git:

folder1/suba folder2/subb folder3/subc 

Y localmente tengo la carpeta pública en mi server web.

 http://domain.com/ 

apunta a esa carpeta

 ~/apps/appname/public 

Me gustaría hacer un clon git de la folder3/subc en la carpeta public en el server. Ahora sé sobre el pago escaso, pero eso conserva la jerarquía de la carpeta (como por ejemplo so ~/apps/appname/public/folder3/subc ).

No quiero esa jerarquía y me gustaría consultar el contenido de la carpeta 3 / subc directamente en la carpeta pública.

¿Es eso posible?

Si ~/apps/appname/public está en un sistema de files compartido, y su server web no altera los files extraídos, puede mantener un índice dedicado de sus contenidos y simplemente usar git read-tree -um para actualizar el sistema de files de cualquier compromiso que te guste:

 ( export GIT_INDEX_FILE=/path/to/repo/.git/appname-public-manifest export GIT_WORK_TREE=~/apps/appname/public git read-tree -um `git write-tree` master:folder3/subc ) 

El git write-tree escribe un tree para git read-tree para inspeccionar, y el tree de lectura aplica las diferencias entre lo que hay ahora y lo que está en el tree especificado para el índice y el tree de trabajo.

Si ya no hay nada en ese directory, no hay necesidad de inicializar, de lo contrario

 ( export GIT_INDEX_FILE=/path/to/repo/.git/appname-public-manifest export GIT_WORK_TREE=~/apps/appname/public git read-tree --empty # start from nothing git add . # index what's there now ) 

configurará el manifiesto para que coincida con lo que ya está allí.

No puedes clonar un subdirectory. Sin embargo, puedes crear clones superficiales. Tales clones poco profundos son adecuados solo para el deployment.

Lo que significa que no puedes Comprometer, tirar, empujar y volver a establecer la base usando esos clones. Los clones poco profundos te ayudan a networkingucir la huella del tamaño del clon