Wie lade ich .zip von GitHub für ein bestimmtes Commit herunter?

106

Ich möchte eine ZIP-Datei mit der Quelle einer auf Github gehosteten Bibliothek herunterladen, aber ich möchte den Master nicht, da ich jedes Mal, wenn ich sie herunterlade, eine andere Version herunterladen könnte.

Diese bestimmte Bibliothek hat keine Tags, daher kann ich das nicht verwenden.

Wie lade ich die source.zip für ein bestimmtes Commit herunter?

ChocoDeveloper
quelle
3
Dies muss nicht mit PHP oder Composer-PHP markiert sein, oder?
Cacovsky

Antworten:

218

Sie können das gewünschte sha in die Download-URL einfügen:

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

Wenn Sie eine funktionierende URL haben, können Sie in der Regel "master" durch die gewünschte sha ersetzen.

Unter Unix:

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

Denken Sie daran, dass wget nicht funktioniert, wenn dies ein privates Repo ist, es sei denn, Sie übergeben ebenfalls ein OAuth-Token.

Hier noch mehr Infos dazu:

Probleme beim Herunterladen von Git-Archiv-Tarballs von Private Repo

Zeki
quelle
7
Ich hatte diese (coole) Art nicht erwartet. Habe Git-Befehle erwartet;)
HenchHacker
Überprüfen Sie auch diesen Link - Könnte
Ravindra Gullapalli
Sie können die kurze sha auch verwenden!
Wjandrea
Selbst wenn ich wget -Odie Archiv-ZIP-Datei umbenenne, erhalte ich beim Entpacken einen großen hässlichen SHA1-Verzeichnisnamen. Wie kann man das vermeiden?
QED
40

Klicken Sie beim Anzeigen des Commit-Codes oben rechts auf die Schaltfläche "Code durchsuchen" und anschließend auf "Postleitzahl herunterladen".

user2722591
quelle
1
Sie haben jetzt eine Schaltfläche "Klonen oder Herunterladen", über die Sie "ZIP herunterladen" können.
SureshS
"Klonen oder Herunterladen" ist die neue Schaltfläche, die die alten Schaltflächen "Klonen" und "Herunterladen" ersetzt. Die neue Schaltfläche macht keine bestimmten Versionen - verwenden Sie die von Zeki beschriebene
Kumpel
3
Dies hat bei mir im Februar 2017 funktioniert. Das Repo wurde mit Änderungen zum Zeitstempel des ausgewählten Commits heruntergeladen.
ocean4dream
7

Dies ist eine alte Frage, wollte aber erwähnen, dass Sie Folgendes verwenden können, wenn Sie nur das Commit als Patch und nicht das gesamte Repo zum Zeitpunkt des Commits möchten:

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

Die /commitund .patchTeile sind der wichtige Teil.

Dies ist besonders nützlich, wenn Sie eine Änderung zusammenführen möchten, die vor einiger Zeit rückgängig gemacht wurde und daher im gegabelten Repo nicht vorhanden ist.

Trojaner
quelle