Descargue archivos específicos de github en la línea de comando, no clone todo el repositorio

4 minutos de lectura

¿Cómo descargo solo 2 archivos de github usando la línea de comando?
Algo en las líneas de:

git fetch git://github.com/username/Project.git/file1
git fetch git://github.com/username/Project.git/file2

avatar de usuario
dbrumann

Si va a la página y ve los enlaces proporcionados por “raw” (en la esquina superior izquierda, al ver el archivo). Verás, que puedes acceder a él por:

https://github.com/username/repository/raw/$changeset_hash/path/to/file

En vez de $changeset_hash también puede proporcionar una rama (por ejemplo, maestra) o una etiqueta.

Puede recuperar el archivo sin formato usando algo como wget.

No es posible acceder a un solo archivo directamente desde un repositorio .git (hasta donde yo sé), debido a cómo se almacenan los datos.

editar: Cuando desee acceder a un archivo desde un repositorio privado, primero debe crear un token de acceso con los permisos apropiados en la configuración de su cuenta. En lugar de llamar a la URL anterior, puede usar API de github para acceder al contenido de un archivo. Asegúrese de utilizar el encabezado Aceptar para tipos de medios personalizados para obtener los datos en bruto. Esto podría parecerse a esto:

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

los -O guardará el contenido en un archivo local con el mismo nombre que el nombre del archivo remoto. Para un uso más fácil, puede envolverlo en un script. @Chris_Withers sugirió una edición con un buen fragmento de Python que desafortunadamente fue rechazado por ser un gran cambio en la respuesta.

  • Acceder a un solo archivo desde .git es bastante sencillo. git ls-tree branch da una lista de archivos y/o árboles. Luego, git cat-file -p blob-sha imprime el contenido de un archivo.

    – William Pursell

    6 de febrero de 2012 a las 12:42


  • ¿Cómo puedo obtenerlo de un repositorio privado?

    – experto

    10/10/2014 a las 20:12

  • También quiero algo de un repositorio privado, por lo que primero debo enviar la autenticación. Una solicitud o CURL simple no funcionará debido a problemas de autenticación.

    – CtheGood

    11/06/2015 a las 19:25

  • Puede crear un token de acceso y agregarlo al encabezado de autenticación de curl-request.

    – dbrumann

    12 de junio de 2015 a las 8:25

Copie el enlace sin formato del archivo específico de GitHub. (Al abrir el archivo en Github, en la esquina superior derecha puede ver la opción para abrir el archivo en modo sin formato. Ábralo en modo sin formato y copie la URL)

Ahora use el comando curl en la línea de comandos para descargar el archivo.

curl -o filename raw-link-to-file

En la nueva interfaz de usuario (alrededor de junio de 2020), si la URL de su archivo es

https://github.com/StellarCN/scp_zh/blob/master/fonts/SimHei.ttf

después

wget https://github.com/StellarCN/scp_zh/blob/master/fonts/SimHei.ttf?raw=true

avatar de usuario
vpatil

git checkout  

P.ej:

git checkout master~2 file1

(git checkout --help por ayuda)

avatar de usuario
colserdav

Necesito obtener un enlace sin formato

curl https://github.com/[user]/[package]/blob/master/package.json

y luego llamar para vincular como

curl https://raw.githubusercontent.com/[user]/[package]/main/package.json

Esto funciona para mi.

Puedes probar github-files-buscadores una herramienta de línea de comandos que descarga una sola carpeta o archivo desde un repositorio de GitHub.

Dado el ejemplo anterior, puede usar el siguiente comando para obtener los dos archivos específicos de github:

fetcher --url="git://github.com/username/Project.git/file1" 
fetcher --url="git://github.com/username/Project.git/file2" 

Piense en un escenario más real: estaba visitando la siguiente página web y desea descargar el async subdirectorio solo.

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

Lo siento por no poder publicar imágenes.

Con el github-files-fetcherprimero debe copiar el url de esa página, que es https://github.com/reduxjs/redux/tree/master/examples/asyncy luego ejecute el siguiente comando en la línea de comando:

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

estoy usando linux aqui me funciono

Paso 1, vaya al archivo que desea descargar y haga clic en el botón sin formato

ingrese la descripción de la imagen aquí

Paso 2 copia la URL de la barra de búsqueda

ingrese la descripción de la imagen aquí

Paso 3 ejecuta el comando en tu terminal

wget paste-url

ingrese la descripción de la imagen aquí

  • Proporcione una explicación de su respuesta para que el próximo usuario sepa por qué esta solución funcionó para usted. Además, resuma su respuesta en caso de que el enlace deje de funcionar en el futuro.

    – Elydasian

    21 de julio de 2021 a las 8:38

¿Ha sido útil esta solución?