Come scaricare .zip da GitHub per un particolare commit sha?


106

Voglio scaricare un .zip con il sorgente di una libreria ospitata su github, ma non voglio il master, perché ogni volta che scarico potrei scaricare una versione diversa.

Questa particolare libreria non ha tag, quindi non posso usarli.

Quindi come faccio a scaricare source.zip per uno specifico commit sha?


3
Questo non ha bisogno di essere taggato con php o composer-php, vero?
Cacovsky

Risposte:


218

Puoi mettere lo sha che vuoi nell'URL di download:

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

Come regola generale, se hai un URL che funziona, puoi sostituire "master" con lo sha specifico che desideri.

Su unix:

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

Tieni presente che se si tratta di un repository privato, wget non funzionerà a meno che non passi anche un token OAuth.

Ecco maggiori informazioni su questo:

Problemi con il download dei tarball degli archivi Git da Private Repo


7
Non mi aspettavo quel (fantastico) modo di farlo.
Mi

Controllare questo link così - potrebbe essere alla ricerca di questo, invece stackoverflow.com/a/48503019/341117
Ravindra Gullapalli

Puoi usare anche lo sha breve!
wjandrea

Anche se uso wget -Oper rinominare il file ZIP dell'archivio, quando decompresso ottengo un brutto nome di directory SHA1. Qualche modo per evitarlo?
QED

40

Quando si visualizza il codice del commit, fare clic sul pulsante "Sfoglia codice" in alto a destra, quindi fare clic su "Scarica ZIP".


1
Ora hanno un pulsante "Clona o Scarica", dove puoi "Scarica ZIP".
SureshS

"Clone or Download" è il nuovo pulsante che sostituisce i vecchi pulsanti "Clone" e "Download". Il nuovo pulsante non fa versioni specifiche - usa il modo descritto da Zeki
amico

3
Questo ha funzionato per me nel febbraio 2017. Ha scaricato il repository con le modifiche al timestamp del commit selezionato.
ocean4dream

7

Questa è una vecchia domanda, ma volevo menzionare che se vuoi solo il commit come una patch e non l'intero repo al momento del commit, puoi usare:

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

Le parti /commite .patchsono la parte importante.

Ciò è particolarmente utile se si desidera unire una modifica che è stata annullata qualche tempo fa e quindi non esiste nel repo biforcuto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.