ChocoDeveloper
ChocoDeveloper

Reputation: 14588

How to download .zip from GitHub for a particular commit sha?

I want to download a .zip with the source of a library hosted on github, but I don't want the master, because every time I download I could be downloading a different version.

This particular library does not have tags, so I can't use that.

So how do I download the source.zip for a specific commit sha?

Upvotes: 151

Views: 72254

Answers (4)

Noam Manos
Noam Manos

Reputation: 17000

For those who came here looking for a way to download a particular file (or directory), from a particular commit (or branch):

git_user="user-name"
git_project="project-name"
commit_or_branch="sha-id or branch name"
dir_or_file="path/to/dir-or-file"

archive_url="https://github.com/${git_user}/${git_project}/archive/${commit_or_branch}.tar.gz"

wget -O - ${archive_url} | tar xz --strip=1 "${git_project}-${commit_or_branch}/${dir_or_file}"

The advantage of downloading the archive as tar.gz, is that you can directly pipe wget into tar command, so it will extract the gz on the fly.

Upvotes: 5

Zeki
Zeki

Reputation: 5286

You can put the sha that you want in the download url:

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

As a general rule, if you have a url that works, you can replace "master" with the specific sha you want.

On unix:

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

Keep in mind that if this is a private repo then wget will not work unless you pass an OAuth token as well.

Here's more info on that:

Having trouble downloading Git archive tarballs from Private Repo

Upvotes: 288

trojanfoe
trojanfoe

Reputation: 122449

This is a an old question, but wanted to mention that if you want just the commit as a patch, and not the whole repo at the time of the commit, you can use:

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

The /commit and .patch parts being the important part.

This is particularly useful if you want to merge in a change that was reversed a while back and therefore doesn't exist in the forked repo.

Upvotes: 10

user2722591
user2722591

Reputation: 485

When viewing the commit's code, click the button "Browse Code" on the upper right, after that click on "Download ZIP".

Upvotes: 46

Related Questions