Pregunta Descargue una sola carpeta o directorio de un repositorio de GitHub


¿Cómo puedo descargar solo una carpeta o directorio específico de un repositorio de Git remoto alojado en GitHub?

Digamos que el ejemplo del repositorio de GitHub vive aquí:

git@github.com:foobar/Test.git

Su estructura de directorio:

Test/
    foo/ 
       a.py
       b.py
    bar/
       c.py
       d.py

Quiero descargar solo el foo carpeta y no clonar todo el proyecto de prueba.


687
2017-08-18 10:33


origen


Respuestas:


Actualización de septiembre de 2016: hay algunas herramientas creadas por la comunidad que pueden hacer esto por usted:


Git no es compatible con esto, pero Github lo hace a través de SVN. Si pagas el código con subversión, Github esencialmente convertirá el repo de git a subversión en el backend, y luego servirá el directorio solicitado.

A continuación, le mostramos cómo puede usar esta función para descargar una carpeta específica. Usaré la popular biblioteca de JavaScript lodash como ejemplo.

  1. Obtener la URL del repositorio. Primero, copie la URL del repositorio Github en su portapapeles. github repo URL example

  2. Modificar la URL para subversión. Quiero descargar la carpeta en /docs desde el master rama, entonces añado trunk/docs. La URL completa es ahora https://github.com/lodash/lodash/trunk/docs. Consulte mi nota a continuación para obtener una explicación más detallada de por qué debemos usar este formato de URL.

  3. Descargue la carpeta. Ve a la línea de comando y agarra la carpeta con SVN. svn checkout https://github.com/lodash/lodash/trunk/docs

Es posible que no vea ninguna actividad de inmediato porque Github tarda hasta 30 segundos para convertir repositorios más grandes, así que tenga paciencia.

Explicación completa del formato de URL:

  • Si estás interesado en master rama, uso trunk en lugar. Entonces, el camino completo es trunk/foldername
  • Si estás interesado en foo rama, uso branches/foo en lugar. los   la ruta completa se ve como branches/foo/foldername
  • Protip: puedes usar svn ls para ver las etiquetas y ramas disponibles antes de descargar si lo desea

¡Eso es todo! Github admite más funciones de subversión también, incluido el apoyo para cometer e impulsar cambios.


660
2017-08-12 18:54



Dos opciones para esta característica:

Opción 1: Extensiones del navegador

Extensión de Chrome, Complemento de Firefox

Uso:

  1. En cualquier página de repositorios de GitHub.
  2. Simplemente haga doble clic en los elementos que necesita.
  3. Haga clic en el botón de descarga en la parte inferior derecha.
  4. Consulte el panel de progreso y espere a que se descargue el activador del navegador.
  5. Obtenga el archivo ZIP.

Obtener Token:

  1. Haga clic en el ícono de Extensión de GitZip en su navegador.
  2. Haga clic en el enlace "Normal" o "Privado" además de "Obtener Token".
  3. Autoriza el permiso de GitZip en la página de autenticación de Github.
  4. Volver a la página de repositorio del comienzo.
  5. Continúa usando.

Opción 2: Github gh-page

http://kinolien.github.io/gitzip mediante el uso de las API de GitHub y JSZip, FileSaver.js.

Paso 1: ingrese la url github al campo en la esquina superior derecha.
Paso 2: presione enter o haga clic en descargar para descargar zip directamente o haga clic en buscar para ver la lista de subcarpetas y archivos.
Paso 3: haga clic en "Descargar archivo Zip" o "Obtener archivo" para obtener archivos.

En la mayoría de los casos, funciona bien, excepto que la carpeta contiene más de 1000 archivos, debido a la limitación de Github Trees API. (se refiere a Contenido de Github API #)

Y también puede admitir repositorios privados / públicos y actualizar el límite de tarifas, si tiene una cuenta GitHub y usa el enlace "obtener token" en este sitio.


356
2017-11-17 09:41



Ir DownGit > Ingrese su URL> ¡Descargar!

Ahora usted puede DESCARGAR DIRECTAMENTE o crear ENLACE DE DESCARGA para cualquier directorio o archivo público de GitHub (archivo especialmente grande) de DownGit! Aquí hay una demostración simple-


DownGit


También puede configurar la propiedad del archivo descargado- uso detallado.


280
2017-08-10 17:13



Si usted tiene svn, puedes usar svn export para hacer esto:

svn export https://github.com/foobar/Test.git/trunk/foo

Observe el formato de URL:

  • La URL base es https://github.com/
  • /trunk anexado al final

Antes de correr svn export, es bueno verificar primero el contenido del directorio con:

svn ls https://github.com/foobar/Test.git/trunk/foo

137
2017-08-19 23:00



Para un genérico Repo git:

Si desea descargar archivos, no clonar el repositorio con historial, puede hacerlo con git-archive.

git-archive crea un archivo comprimido zip o tar de un repositorio de git. Algunas cosas que lo hacen especial:

  1. Puede elegir qué archivos o directorios en el repositorio de git para archivar.
  2. No archiva el .git/ carpeta, o cualquier archivo no rastreado en el repositorio en el que se ejecuta.
  3. Puede archivar una rama, etiqueta o compromiso específico. Los proyectos administrados con git a menudo usan esto para generar archivos de versiones del proyecto (versión beta, versión 2.0, etc.) para que los usuarios los descarguen.

Un ejemplo de crear un archivo de docs/usage directorio desde un repositorio remoto al que está conectado con ssh:

# in terminal
$ git archive --format tar --remote ssh://server.org/path/to/git HEAD docs/usage > /tmp/usage_docs.tgz

Más información en esta publicación en el blog y el documentación de git.

Nota sobre GitHub Repos:

GitHub no permite git-archive acceso. ️


53
2018-04-13 01:17



Creé un proyecto de código abierto, llamado GitHubFolderDownloader. Le permite descargar una sola carpeta de un repositorio sin clonar ni descargar todo el repositorio.


33
2018-06-17 10:16



No hay nada de malo en otras respuestas, pero pensé que compartiría las instrucciones paso a paso para aquellos que deambulan por este proceso por primera vez.

Cómo descargar una sola carpeta de un repositorio de github (Mac OS X):

~ Para abrir Terminal, simplemente haz clic en Spotlight y escribe terminal y luego presiona enter

  1. En una Mac, es probable que ya tenga SVN (para probar solo la terminal abierta y tipo "svn" o "que svn" ~ sin las comillas)
  2. En Github: busque la ruta de acceso de Github a su carpeta de git (no al repositorio) haciendo clic en el nombre de la carpeta específica dentro de un repositorio
  3. Copie la ruta desde la barra de direcciones del navegador
  4. Terminal abierto y escriba: svn export
  5. A continuación, pegue la dirección (por ejemplo): https://github.com/mingsai/Sample-Code/tree/master/HeadsUpUI
  6. Reemplaza las palabras: árbol / maestro 
  7. con la palabra: el maletero
  8. Escriba la carpeta de destino para los archivos (en este ejemplo, yo almacenar la carpeta de destino dentro de la carpeta de descargas para el usuario actual)
  9. Aquí el espacio es solo la barra espaciadora, no la palabra (espacio) ~ / Descargas / HeadsUpUI
  10. El comando final del terminal muestra el comando completo para descargar  carpeta (compare la dirección con el paso 5) svn export   https://github.com/mingsai/Sample-Code/trunk/HeadsUpUI  ~ / Descargas / HeadsUpUI

Por cierto: si estás en Windows o en otra plataforma, puedes encontrar una descarga binaria de subversión (svn) en http://subversion.apache.org

~ Si desea descargar la carpeta en lugar de simplemente descargarla, intente con la ayuda de svn (tldr: replace exportar con revisa)

Actualizar

En cuanto al comentario sobre la reanudación de una descarga / pago interrumpido. Yo trataría de correr svn cleanup seguido por svn update. Por favor busque SO para opciones adicionales.


17
2017-09-13 00:37



No puedes; a diferencia de Subversion, donde cada subdirectorio se puede controlar individualmente, Git opera sobre una base de repositorio completo.

Para los proyectos en los que es necesario un acceso más detallado, puede usar submódulos: cada submódulo es un proyecto separado de Git y, por lo tanto, puede clonarse individualmente.

Es concebible que un front-end de Git (por ejemplo, la interfaz web de GitHub, o gitweb) elija proporcionar una interfaz para que extraigas una carpeta determinada, pero a mi conocimiento ninguno de ellos hace eso (aunque sí te permiten descargar archivos individuales) , entonces si la carpeta no contiene demasiados archivos, esa es una opción)

Editar - GitHub en realidad ofrece acceso a través de SVN, lo que le permite hacer justamente esto (según el comentario). Ver https://github.com/blog/1438-improved-svn-here-to-stay-old-svn-going-away para las últimas instrucciones sobre cómo hacer esto


15
2017-08-18 10:41



Si realmente solo quieres solo "descargar" la carpeta y no "clon" (para el desarrollo), la forma más sencilla de obtener un dupdo de la versión más reciente del repositorio (y por lo tanto una carpeta / archivo dentro de él), sin necesidad de clonar todo el repositorio o incluso de instalar git en primer lugar, es descargar un archivo comprimido (para cualquier repositorio, tenedor, sucursal, commit, etc.) accediendo al repositorio / fork / branch / commit deseado en GitHub (p. ej. http(s)://github.com/<user>/<repo>/commit/<Sha1> para obtener una copia de los archivos tal como estaban después de una confirmación específica) y seleccionar el Downloads botón cerca de la esquina superior derecha.

Este formato de archivo no contiene la magia de git-repo, solo los archivos rastreados (y quizás algunos archivos .gitignore si fueron rastreados, pero puede ignorarlos: p), eso significa que si el código cambia y usted desea manténgase en la cima, tendrá que volver a descargarlo manualmente, y también significa que no podrá usarlo como un repositorio de git ...

No estoy seguro de si eso es lo que está buscando en este caso (de nuevo, "descargar" / ver frente a "clonar" / desarrollar), pero puede ser útil, no obstante ...


12
2017-08-18 13:56



1.Haga clic en este enlace http://kinolien.github.io/gitzip/
2. Pegue el enlace de la carpeta Github que desea descargar.
3.Haga clic en buscar, mostrará todos los archivos para descargar.
Nota: -Utilizando la búsqueda no es necesario ingresar la clave del token;) .. mantenerlo simple (y)


11
2017-07-28 17:53