Bagaimana cara mengunduh .zip dari GitHub untuk commit tertentu?

106

Saya ingin mengunduh .zip dengan sumber pustaka yang dihosting di github, tetapi saya tidak menginginkan masternya, karena setiap kali saya mengunduh, saya dapat mengunduh versi yang berbeda.

Pustaka khusus ini tidak memiliki tag, jadi saya tidak dapat menggunakannya.

Jadi bagaimana cara mendownload source.zip untuk commit tertentu?

ChocoDeveloper
sumber
3
Ini tidak perlu diberi tag dengan php atau composer-php, bukan?
Cacovsky

Jawaban:

218

Anda dapat meletakkan sha yang Anda inginkan di url unduhan:

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

Sebagai aturan umum, jika Anda memiliki url yang berfungsi, Anda dapat mengganti "master" dengan sha spesifik yang Anda inginkan.

Di unix:

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

Perlu diingat bahwa jika ini adalah repo pribadi, maka wget tidak akan berfungsi kecuali Anda meneruskan token OAuth juga.

Berikut info lebih lanjut tentang itu:

Kesulitan mengunduh arsip tarball Git dari Private Repo

Zeki
sumber
7
Tidak mengharapkan cara (keren) untuk melakukannya.
Menunggu
Periksa tautan ini juga - Mungkin mencari ini sebagai gantinya stackoverflow.com/a/48503019/341117
Ravindra Gullapalli
Anda juga bisa menggunakan sha pendek!
wjandrea
Bahkan jika saya menggunakan wget -Ountuk mengganti nama file ZIP arsip, ketika membuka zip saya mendapatkan nama direktori SHA1 jelek yang besar. Adakah cara untuk menghindari ini?
QED
40

Saat melihat kode komit, klik tombol "Jelajahi Kode" di kanan atas, setelah itu klik "Unduh ZIP".

pengguna2722591
sumber
1
Mereka memiliki tombol 'Klon atau Unduh' sekarang, di mana Anda dapat 'Unduh ZIP'.
SureshS
"Clone or Download" adalah tombol baru yang menggantikan tombol "Clone" dan "Download" yang lama. Tombol baru tidak melakukan versi tertentu - gunakan cara yang dijelaskan Zeki
sobat
3
Ini berfungsi untuk saya pada Februari 2017. Itu mengunduh repo dengan perubahan pada stempel waktu dari komit yang dipilih.
ocean4dream
7

Ini adalah pertanyaan lama, tetapi ingin menyebutkan bahwa jika Anda hanya menginginkan komit sebagai tambalan, dan bukan seluruh repo pada saat komit, Anda dapat menggunakan:

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

The /commitand .patchparts menjadi bagian penting.

Ini sangat berguna jika Anda ingin menggabungkan perubahan yang telah dibalik beberapa waktu lalu dan oleh karena itu tidak ada di repo bercabang.

trojanfoe.dll
sumber