¿Cómo descargar .zip de GitHub para una confirmación en particular?

106

Quiero descargar un .zip con la fuente de una biblioteca alojada en github, pero no quiero el master, porque cada vez que descargo podría estar descargando una versión diferente.

Esta biblioteca en particular no tiene etiquetas, así que no puedo usarla.

Entonces, ¿cómo descargo el source.zip para un compromiso específico?

ChocoDesarrollador
fuente
3
Esto no necesita estar etiquetado con php o composer-php, ¿verdad?
Cacovsky

Respuestas:

218

Puedes poner el sha que quieras en la url de descarga:

https://github.com/{username}/{projectname}/archive/{sha}.zip

Como regla general, si tiene una URL que funciona, puede reemplazar "master" con el sha específico que desee.

En unix:

wget https://github.com/{username}/{projectname}/archive/{sha}.zip

Tenga en cuenta que si se trata de un repositorio privado, wget no funcionará a menos que también pase un token de OAuth.

Aquí hay más información sobre eso:

Tener problemas para descargar archivos tar de Git desde Private Repo

Zeki
fuente
7
No esperaba esa forma (genial) de hacerlo. Esperaba comandos de git;)
HenchHacker
Verifique este enlace también - Es posible que esté buscando esto en su lugar stackoverflow.com/a/48503019/341117
Ravindra Gullapalli
¡También puedes usar el sha corto!
wjandrea
Incluso si utilizo wget -Opara cambiar el nombre del archivo ZIP, cuando lo descomprimo obtengo un nombre de directorio SHA1 muy feo. ¿Alguna forma de evitar esto?
QED
40

Cuando vea el código de la confirmación, haga clic en el botón "Buscar código" en la parte superior derecha, luego haga clic en "Descargar ZIP".

usuario2722591
fuente
1
Ahora tienen un botón 'Clonar o Descargar', donde puede 'Descargar ZIP'.
SureshS
"Clonar o Descargar" es el nuevo botón que reemplaza a los antiguos botones "Clonar" y "Descargar". El nuevo botón no tiene versiones específicas, use la forma en que Zeki lo describió
amigo
3
Esto funcionó para mí en febrero de 2017. Descargó el repositorio con cambios en la marca de tiempo de la confirmación seleccionada.
ocean4dream
7

Esta es una pregunta antigua, pero quería mencionar que si solo desea la confirmación como parche, y no todo el repositorio en el momento de la confirmación, puede usar:

$ wget http://github.com/username/repo/commit/sha1.patch
#                        ^^^^^^^^ ^^^^        ^^^^
#                        change   change      change

Las partes /commity .patchson la parte importante.

Esto es particularmente útil si desea fusionar un cambio que se revirtió hace un tiempo y, por lo tanto, no existe en el repositorio bifurcado.

trojanfoe
fuente