How to download a GitHub repo as .zip using command line

I am trying to download a .zip file from GitHub using the command line in Ubuntu. I am using wget command for it on a remote Ubuntu system.

I run wget <link> where <link> is the address bar link of the file which I want to download. It ends with archive.zip?ref=master.

Now, when I am executing the command, it is downloading a file with text/html type and not the .zip file which I want.

Please tell me how to get the link to be given as the parameter of wget. Right now, I am just copying the link address of the button (using right click) and writing that as a wget parameter.


Solution 1:

From the comments I saw you actually speak about GitHub.

It won't work like this because:

Downloading a project on GitHub causes the GitHub server to first pack your project as zip and than forwarding you to a temporary link where you get your zip ..

this link will only work for a certain time and than GitHub will delete your zip file from their servers..

So what you get with wget is just the html page which would forward you as soon as your zip file is generated.

As suggested use

git clone http://github.com/<yourRepoLink> <optional local path where to store>

to download the git repo ... If for some reason (e.g. for transfer it to others) you need it explicitly as zip you still could pack it after cloning is finished..

Solution 2:

It does work, if you use the correct URL.

For a GitHub repo, there's a zip at https://github.com/<user>/<repo>/archive/<branch>.zip, so you can download it with:

wget https://github.com/<user>/<repo>/archive/<branch>.zip

This downloads the zipped repo for a given branch. Note that you can also replace the branch by a commit hash.

Using cURL

curl -L https://github.com/<user>/<repo>/archive/<branch>.zip

cURL's -L flag follows redirects - it's a default in wget.

Download a .tgz instead of .zip

You can also download a tarball with:

wget https://github.com/<user>/<repo>/archive/<branch>.tar.gz

Solution 3:

2021 Update Download and unzip from GitHub Using wget

Will also expand and delete the archive. Just edit the REPLACE_ values and then copy/paste

zip

GH_USER=REPLACE_WITH_USER \
GH_REPO=REPLACE_WITH_REPO \
GH_BRANCH=REPLACE_WITH_BRANCH \
wget https://github.com/${GH_USER}/${GH_REPO}/archive/refs/tags/${GH_BRANCH}.zip \
-O "${GH_REPO}-${GH_BRANCH}.zip" && \ 
unzip ./"${GH_REPO}-${GH_BRANCH}.zip" && \
rm ./"${GH_REPO}-${GH_BRANCH}.zip"

tgz

GH_USER=REPLACE_WITH_USER \
GH_REPO=REPLACE_WITH_REPO \
GH_BRANCH=REPLACE_WITH_BRANCH \
wget https://github.com/${GH_USER}/${GH_REPO}/archive/refs/tags/${GH_BRANCH}.tar.gz \
-O "${GH_REPO}-${GH_BRANCH}.tar.gz" && \
tar -xzvf ./"${GH_REPO}-${GH_BRANCH}.tar.gz" && \
rm ./"${GH_REPO}-${GH_BRANCH}.tar.gz"