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"