I wished to download the mysite folder from this link: https://github.com/username/repository/master/
-
11Possible duplicate of Download a single folder or directory from a GitHub repoHelen– Helen2017年07月21日 09:37:52 +00:00Commented Jul 21, 2017 at 9:37
-
3Go to DownGit > Enter GitHub Folder URL > Download (no command, no tool, no fuss!)Minhas Kamal– Minhas Kamal2020年05月13日 15:47:48 +00:00Commented May 13, 2020 at 15:47
-
3github UI sucks. should have download folder option.JGFMK– JGFMK2020年12月13日 20:09:56 +00:00Commented Dec 13, 2020 at 20:09
-
@MinhasKamal you should post that as an answer. Very useful and easy to use tool right there.julealgon– julealgon2022年06月24日 22:27:46 +00:00Commented Jun 24, 2022 at 22:27
13 Answers 13
You can download a file/folder from github
Simply use: svn export <repo>/trunk/<folder>
Ex: svn export https://github.com/lodash/lodash/trunk/docs
Note: You may first list the contents of the folder in terminal using svn ls <repo>/trunk/folder
(yes, that's svn here. apparently in 2016 you still need svn to simply download some github files)
4 Comments
<repo>/branches/<branch_name>/<folder> for a non-master branch, but otherwise worked flawlessly.<repo>/tags/<tag_name>/<folder> also seems to workYou can use Github Contents API to get an archive link and tar to retrieve a specified folder.
Command line:
curl https://codeload.github.com/ [owner]/[repo]/tar.gz/master | \ tar -xz --strip=2 [repo]-master/[folder_path]
For example,
if you want to download examples/with-apollo/ folder from zeit/next.js, you can type this:
curl https://codeload.github.com/zeit/next.js/tar.gz/master | \
tar -xz --strip=2 next.js-master/examples/with-apollo
5 Comments
wget -O - https://github.com/zeit/next.js/archive/master.tar.gz | tar -xz --strip=2 "next.js-master/examples/with-apollo"wget -c https://github.com/user/project/archive/master.zipUse GitZip online tool. It allows to download a sub-directory of a github repository as a zip file. No git commands needed!
6 Comments
How to download a specific folder from a GitHub repo
Here a proper solution according to this post:
Create a directory
mkdir github-project-name cd github-project-nameSet up a git repo
git init git remote add origin <URL-link of the repo>Configure your git-repo to download only specific directories
git config core.sparseCheckout true # enable thisSet the folder you like to be downloaded, e.g. you only want to download the doc directory from
https://github.com/project-tree/master/docecho "/absolute/path/to/folder" > .git/info/sparse-checkoutE.g. if you only want to download the doc directory from your master repo
https://github.com/project-tree/master/doc, then your command isecho "doc" > .git/info/sparse-checkout.Download your repo as usual
git pull origin master
3 Comments
git pull origin's verbose that doing this downloaded the entire repository; but retained only the folder specified in .git/info/sparse-checkout. and using https://downgit.github.io/ did it for me.There is a button Download ZIP. If you want to do a sparse checkout there are many solutions on the site. For example here.
5 Comments
git to download a sub-folder from a repository. Anyway, the repository hosting site github.com doesn't provide a way to do so without using any external tools.Download ZIP button? On the main repository page, click on the green <> Code button. In the pop-up menu, you'll find the Download Zip option.VSCode Integration for Github
Anyone like me browsing a github repository and want to download a folder from a repository from the browser, without any third party tools, you might use the vs code extensions of github.
Step 1 Open the directory of the repository which you want to download in your browser.
Step 2 In the url bar replace .com with .dev. For ex: https://github.com/lodash/lodash will become https://github.dev/lodash/lodash.
Step 3 This will open a vs code interface of that git repository. Just right click on the folder which you want to download and then press download in option.
1 Comment
If you want to automate the steps, the suggestions here will work only to an extent.
I came across this tool called fetch and it worked quite fine for me. You can even specify the release. So, it takes a step to download and set it as executable, then fetch the required folder:
curl -sSLfo ./fetch \
https://github.com/gruntwork-io/fetch/releases/download/v0.3.12/fetch_linux_amd64
chmod +x ./fetch
./fetch --repo="https://github.com/foo/bar" --tag="${VERSION}" --source-path="/baz" /tmp/baz
1 Comment
This is probably not the most efficient solution, but I think it's fun! THis downloads all the files in a folder on github just using bash
(I used this to download the files for the postgresql tutorial but haven't tested it elsewhere)
curl "https://github.com/postgres/postgres/tree/master/src/tutorial" > test.html
links=$(cat test.html | grep -o \[^\"\]\*/blob/\[^\"]\*)
echo $links
echo "Now as a list.."
as_list=($links)
for (( i=0; i<${#as_list[@]}; i++ ));do
download_link=("https://raw.githubusercontent.com${as_list[$i]}")
echo "completing link: "
echo "${download_link///blob/""}"
wget "${download_link///blob/""}"
done
Explanation:
(1)the first line downloads the target folder as an html, and saves it as test.html
(2) the second line extracts all links to files on the page. This works by observing that links to files look like "/postgres/postgres/blob/master/src/tutorial/.gitignore" on the html, we can get all those by looking for a 'blob' and getting all text upto the nearest quote " on each side
(3) we turn this into a list
(4)to finish the job, we observe that the url for the raw text version of the file looks slightly different , e.g. for the url "/postgres/postgres/blob/master/src/tutorial/.gitignore", the url for the raw text file is "https://raw.githubusercontent.com/postgres/postgres/master/src/tutorial/.gitignore". Hence to process the data we turn "/postgres/postgres/blob/master/src/tutorial/.gitignore" into "/postgres/postgres/master/src/tutorial/.gitignore", and finally into "https://raw.githubusercontent.com/postgres/postgres/master/src/tutorial/.gitignore"
P.S. sorry if my bash script is clunky - am a new linux user
Comments
You can use git archive
git archive --remote=ssh://github.com/packageName.git HEAD path/to/my/dir | tar -x
Comments
curl {url for downloading zip file} | 7z a -tzip {project name}-{branch name}/{folder path in that branch}
for example:
curl https://github.com/hnvn/flutter_shimmer/archive/master.zip | 7z a -tzip flutter_shimmer-master/examples
Comments
There exists also a nice browser extension which allows to dl files or folders
Enhanced-github extension for google-chrome browser
Enhanced-github extension for ms-edge browser
Comments
You can download the complete folder under Clone or Download options (Git URL or Download Zip)
There is a button of Download Zip
By using command you can download the complete folder on your machine but for that you need git on your machine. You can find the Git url uner
git clone https://github.com/url
Comments
You can also just clone the repo, after cloning is done, just pick the folder or vile that you want. To clone:
git clone https://github.com/somegithubuser/somgithubrepo.git
then go to the cloned DIR and find your file or DIR you want to copy.