Jak pobrać plik .zip z GitHub dla konkretnego commita sha?

106

Chcę pobrać plik .zip ze źródłem biblioteki hostowanej na github, ale nie chcę pliku master, ponieważ za każdym razem, gdy pobieram, mogę pobierać inną wersję.

Ta konkretna biblioteka nie ma tagów, więc nie mogę tego użyć.

Jak więc pobrać plik source.zip dla określonego sha commit?

ChocoDeveloper
źródło
3
To nie musi być oznaczone tagiem php lub composer-php, prawda?
Cacovsky

Odpowiedzi:

218

Możesz umieścić żądane sha w adresie URL pobierania:

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

Zasadniczo, jeśli masz działający adres URL, możesz zamienić „master” na określony sha, który chcesz.

W systemie UNIX:

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

Pamiętaj, że jeśli jest to prywatne repozytorium, wget nie będzie działał, chyba że podasz również token OAuth.

Oto więcej informacji na ten temat:

Masz problem z pobraniem archiwów Git z archiwum Git z Private Repo

Zeki
źródło
7
Nie spodziewałem się tego (fajnego) sposobu na zrobienie tego. Spodziewał się poleceń gita;)
HenchHacker
Sprawdź również ten link - zamiast tego może szukać tego stackoverflow.com/a/48503019/341117
Ravindra Gullapalli
Możesz też użyć krótkiego sha!
wjandrea
Nawet jeśli używam wget -Odo zmiany nazwy archiwum ZIP, po rozpakowaniu otrzymuję dużą brzydką nazwę katalogu SHA1. Jakiś sposób, aby tego uniknąć?
QED
40

Przeglądając kod zatwierdzenia, kliknij przycisk „Przeglądaj kod” w prawym górnym rogu, a następnie kliknij „Pobierz ZIP”.

user2722591
źródło
1
Mają teraz przycisk „Klonuj lub Pobierz”, gdzie możesz „Pobierz ZIP”.
SureshS
„Klonuj lub pobierz” to nowy przycisk, który zastępuje stare przyciski „Klonuj” i „Pobierz”. Nowy przycisk nie robi konkretnych wersji - użyj sposobu, w jaki opisał Zeki
kumpel
3
To zadziałało dla mnie w lutym 2017. Pobrano repozytorium ze zmianami w sygnaturze czasowej wybranego zatwierdzenia.
ocean4dream
7

To jest stare pytanie, ale chciałem wspomnieć, że jeśli chcesz tylko zatwierdzenia jako łatki, a nie całego repozytorium w momencie zatwierdzenia, możesz użyć:

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

/commitI .patchczęści są ważną częścią.

Jest to szczególnie przydatne, jeśli chcesz scalić zmianę, która została cofnięta jakiś czas temu i dlatego nie istnieje w rozwidlonym repozytorium.

trojanfoe
źródło