it-swarm-es.com

Descargar archivos individuales de GitHub

Supongo que la mayoría de ustedes, desarrolladores, usan cualquier VCS , y espero que algunos de ustedes usen Git. ¿Tiene alguna sugerencia o truco sobre cómo obtener una URL de descarga para un solo archivo en un repositorio?

No quiero la URL para mostrar el archivo en bruto; En caso de binarios no sirve para nada.

http://support.github.com/discussions/feature-requests/41-download-single-file

¿Es posible usar GitHub como un "servidor de descarga"?

Si decidimos cambiar a Google Code, ¿se presenta aquí la funcionalidad mencionada?

¿O hay algún hosting gratuito y VCS para proyectos de código abierto?

491
Radek Simko

Git no admite la descarga de partes del repositorio. Tienes que descargarlo todo. Pero deberías poder hacer esto con GitHub.

Cuando ve un archivo, tiene un enlace a la versión "en bruto". El URL está construido como tal

https://raw.githubusercontent.com/user/repository/branch/filename

Al completar los espacios en blanco en la URL, puede usar Wget o cURL (con la opción -L, ver más abajo) o lo que sea para descargar un solo archivo. De nuevo, no obtendrás ninguna de las funciones de control de versión de Niza utilizadas por Git al hacer esto.

Actualización: Noté que mencionaste que esto no funciona para archivos binarios. Es probable que no deba usar archivos binarios en su repositorio Git, pero GitHub tiene una sección de descargas para cada repositorio que puede usar para cargar archivos. Si necesita más de un binario, puede usar un archivo .Zip. La URL para descargar un archivo cargado es:

https://github.com/downloads/user/repository/filename

Tenga en cuenta que las URL indicadas anteriormente, desde los enlaces en github.com, se redireccionarán a raw.githubusercontent.com. No debe usar directamente la URL proporcionada por este redireccionamiento HTTP 302 porque, por RFC 2616 : "Dado que la redirección podría modificarse en alguna ocasión, el cliente DEBERÍA seguir utilizando el URI de la Solicitud para futuras solicitudes".

488
jonescb
  1. Ve al archivo que quieres descargar.
  2. Haga clic para ver el contenido dentro de la interfaz de usuario de GitHub.
  3. En la parte superior derecha, haga clic derecho el botón Raw.
  4. Guardar como...
458
bearfriend

Puede usar la API V3 para obtener un archivo sin formato como este (necesitará un token OAuth):

curl -H 'Authorization: token INSERTACCESSTOKENHERE' -H 'Accept: application/vnd.github.v3.raw' -O -L https://api.github.com/repos/owner/repo/contents/path

Todo esto tiene que ir en una línea. La opción -O guarda el archivo en el directorio actual. Puede usar -o filename para especificar un nombre de archivo diferente.

Para obtener el token OAuth, siga las instrucciones aquí: https://help.github.com/articles/creating-an-access-token-for-command-line-use

También he escrito esto como una Gist: https://Gist.github.com/madrobby/9476733

33
thomasfuchs

De acuerdo con este Gist , puedes usar wget o cURL:

  1. Haga clic en el nombre del archivo en un repositorio de GitHub.
  2. Haga clic en Raw para mostrar el contenido del archivo.
  3. Copia la URL en tu navegador.
  4. En la línea de comandos, ejecute:
    • wget --no-check-certificate --content-disposition https://URL-from-step3/
    • curl -LJO https://URL-from-step3/
15
Ted Cox

GitHub Mate hace que la descarga de un solo archivo sea sencilla, simplemente haga clic en el icono para descargar, actualmente solo funciona en Chrome.

GitHub Mate Download

14
Cam Song

Esto ahora es posible en GitHub para cualquier archivo. Necesitas traducir tus archivos para raw.github.com. Por ejemplo, si su archivo está en su repositorio en:

https://github.com/<username>/<repo>/some_directory/file.rb

Usando wget puedes agarrar el archivo en bruto de:

https://raw.github.com/<username>/<repo>/<branch>/some_directory/file.rb

Rails Composer es un gran ejemplo de esto.

12
Joe Leo

Para seguir con lo que dijo thomasfuchs, pero para los usuarios de GitHub Enterprise, esto es lo que puede usar.

curl -H 'Authorization: token INSERTACCESSTOKENHERE' -H 'Accept: application/vnd.github.v3.raw' -O -L https://your_domain/api/v3/repos/owner/repo/contents/path

También aquí está la documentación de la API https://developer.github.com/v3/repos/contents

10
Drew Michel

Puedes usar curl de esta manera:

curl -OL https://raw.githubusercontent.com/<username>/<repo-name>/<branch-name>/path/to/file

O significa que Curl descarga el contenido.
L significa que el rizo sigue la redirección

10
Mark

En caso de que desee descargar un archivo Zip desde github usando wget

wget -O filename.Zip https://github.com/downloads/user/repository/filename.zip?raw=true

ver este sitio web para más detalles

8
DJJ

Hay una extensión de Chrome llamada Github mejorado

Agregará un botón de descarga directamente a la derecha de cada archivo.

 enter image description here

Solo debes hacerlo con la URL raw de tu archivo.

Por ejemplo, para descargar el README de AFNetworking:

curl https://raw.githubusercontent.com/AFNetworking/AFNetworking/master/README.md > ADREADME.md 

Como se trata de un repositorio público, no necesita ninguna credencial. Tenga en cuenta el tipo de url: raw.githubusercontent.com/path/to/file

4
Kevin Delord

Este método funciona para Windows ya que nunca he usado MAC, así que no sé cuáles son las teclas alternativas en MAC para las teclas que voy a mencionar a continuación.

Vamos a hablar de los archivos CSV. SI quieres descargar el archivo CSV:

  1. Vaya a ese conjunto de datos en particular que desea descargar y haga clic en él.
  2. Verá el botón "Sin procesar" en la parte superior derecha del conjunto de datos.
  3. Presiona "Alt" y luego haz clic izquierdo en el botón "Raw".
  4. Todo el CSV se descargará en tu sistema.

Recuerda, debes presionar Alt y hacer clic izquierdo simultáneamente. Al hacer clic en el botón "Sin procesar" se abrirá el CSV en el navegador.

Espero que eso ayude.

4
saadi123

En lugar de un enlace para descargar un archivo específico dentro del repositorio, debe usar Releases de GitHub para asociar los datos descargables (como los binarios compilados) con la versión etiquetada del código fuente utilizado para generar esos datos.

https://github.com/blog/1547-release-your-software

Nos complace anunciar Lanzamientos, un flujo de trabajo para enviar software a los usuarios finales. Los lanzamientos son objetos de primera clase con registros de cambios y activos binarios que presentan un historial completo del proyecto más allá de los artefactos Git.

Los lanzamientos van acompañados de notas de lanzamiento y enlaces para descargar el software o el código fuente.

Siguiendo las convenciones de muchos proyectos de Git, las versiones están vinculadas a las etiquetas de Git. Puede usar una etiqueta existente o dejar que los lanzamientos creen la etiqueta cuando se publique.

 enter image description here

3
pkamb

Esto definitivamente funcionaría. Al menos en Chrome. Haga clic derecho en el icono "Sin procesar" -> Guardar enlace como .

3
Ankish Jain

Recientemente encontré un servicio llamado gitzip y también su código abierto:

sitio - http://kinolien.github.io/gitzip/

repo - https://github.com/KinoLien/gitzip

Visite el sitio anterior, ingrese el repositorio o la URL del directorio, puede descargar archivos individuales o el directorio completo como un archivo Zip.

2
avi
  1. La página que has enlazado responde a la primera pregunta.

  2. GitHub también tiene una facilidad de descarga para cosas como lanzamientos.

  3. Código de Google no tiene Git en absoluto.

  4. GitHub, Google Code y SourceForge , solo para comenzar, son hosting gratuito. SourceForge todavía podría hacer CVS .

2
bmargulies

Ahora es posible descargar cualquier archivo o carpeta en particular dentro del repositorio usando esta extensión de google chrome:

GitZip para github: / link: https://chrome.google.com/webstore/detail/gitzip-for-github/ffabmkklhbepgcgfonabamgnfafbdlkn

Uso

  1. En cualquier página pública 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. Ver el panel de progreso y esperar la descarga del desencadenador del navegador.
  5. Obtener el archivo zip.

 enter image description here

 enter image description here

1
Natesh bhat

Para descargar un archivo de un repositorio de Github, use el comando 'curl' con el enlace al archivo en bruto.

curl https://raw.githubusercontent.com/user/repo/filename --output filename

Agregue la opción --output seguida del nuevo nombre de archivo para descargar el archivo en bruto al archivo recién creado.

1
George

Creo que la nuevaurlestructura esraw.giturlpor ejemplo:

archivo git

en bruto

1
fsmart

Si usas curl y firefox ... podrías usar cliget add-on que genera una llamada de curl que incluye todos los mecanismos de autenticación (también conocidas como cookies).

Entonces, haga clic con el botón derecho en el raw botón cliget -> "copiar URL para el enlace" y luego péguelo en un Shell. Obtendrá su archivo incluso si tuvo que iniciar sesión para verlo.

1
estani

Puede probar github-files-fetcher , es una herramienta de línea de comandos que descarga una sola carpeta o archivo desde un repositorio de GitHub.

Piense en un escenario real: estuvo visitando la siguiente página web y quiere descargar el subdirectorio async solo.

https://github.com/reduxjs/redux/tree/master/examples

lo siento por no tener permiso para publicar imágenes.

Con el github-files-fetcher, primero debe copiar el url de esa página, que es https://github.com/reduxjs/redux/tree/master/examples/async , y luego ejecutar el siguiente comando en la línea de comandos:

fetcher --url=https://github.com/reduxjs/redux/tree/master/examples/async

0
Gyumeijie

Utilicé el siguiente formato y creo que es importante informar sobre el camino.

https://github.com/user/repository/raw/branch/filename

^^^ Lo anterior no es muy completo en mi mente.

https://github.com/<user>/<repoROOTname>/blob/master/<path>/<filename>?raw=true

algunos dijeron raw.github.com o raw en lugar de blob, pero la segunda línea funciona para mí y espero que ayude a otros ...

2 ¢

0
rezwits

Para los usuarios con GitHub Enterprise, debe construir la URL en el siguiente esquema

Invoke-WebRequest http://github.mycompany.com/api/v3/repos/my-org/my-repo/contents/myfiles/file.txt -Headers @{"Authorization"="token 8d795936d2c1b2806587719b9b6456bd16549ad8"}

Detalles pueden ser encontrados aqui

http://artisticcheese.blogspot.com/2017/04/how-to-download-individual-files-from.html

0
Gregory Suvalian
  1. En el lado derecho, justo debajo de "Clonar en el escritorio", dice "Descargar archivo zip"
  2. Descargar archivo zip
  3. Extraer el archivo
0
Evan Gertis

O prueba esto

const https = require('https');
const fs = require('fs');
const DOMAIN = 'raw.githubusercontent.com';

function writeFile(data, fileName) {
  fs.appendFile(fileName, data.toString(), err => {
    if (err) {
      console.log('error in writing file', err);
    }
  });
}

function EOF(data) {
  console.log('EOF');
}

function getFileName(pathToFile) {
  var result = pathToFile.split('/');
  var splitLength = result.length;
  return result[splitLength - 1];
}
function getFile(branchName, username, repoName, ...pathToFile) {
  pathToFile.forEach(item => {
    const path = `/${username}/${repoName}/${branchName}/${item}`;
    const URL = `${DOMAIN}${path}`;
    const options = {
      hostname: DOMAIN,
      path: path
    };
    var fileName = getFileName(item);

    https
      .get(options, function(res) {
        console.log(res.statusCode);
        /* if file not found */
        if (res.statusCode === 404) {
          console.log('FILE NOT FOUND');
        } else {
          /* if file found */
          res.on('data', data => writeFile(data, fileName));
          res.on('end', data => EOF(data));
        }
      })
      .on('error', function(res) {
        console.log('error in reading URL');
      });
  });
}
getFile('master', 'bansalAyush', 'InstagramClone', '.babelrc', 'README.md');
0
Ayush Bansal