What are some tips on downloading a single file from a GitHub repo?
I don't want the URL for displaying the raw file; in the case of binaries, there's nothing.
http://support.github.com/discussions/feature-requests/41-download-single-file
Is it even possible to use GitHub as a "download server"?
If we decide to switch to Google Code, is the mentioned functionality presented there?
Or is there any free-of-charge hosting and VCS for open-source projects?
wget full_url_to_raw_file_on_github
.
Go to the file you want to download. Click it to view the contents within the GitHub UI. In the top right, right click the Raw button. Save as...
Git does not support downloading parts of the repository. You have to download all of it. But you should be able to do this with GitHub.
When you view a file it has a link to the "raw" version. The URL is constructed like so
https://raw.githubusercontent.com/user/repository/branch/filename
By filling in the blanks in the URL, you can use Wget or cURL (with the -L
option, see below) or whatever to download a single file. Again, you won't get any of the nice version control features used by Git by doing this.
Update: I noticed you mention this doesn't work for binary files. You probably shouldn't use binary files in your Git repository, but GitHub has a download section for each repository that you can use to upload files. If you need more than one binary, you can use a .zip file. The URL to download an uploaded file is:
https://github.com/downloads/user/repository/filename
Note that the URLs given above, from the links on github.com
, will redirect to raw.githubusercontent.com
. You should not directly use the URL given by this HTTP 302 redirect because, per RFC 2616: "Since the redirection might be altered on occasion, the client SHOULD continue to use the Request-URI for future requests."
raw
after the repository name) is now automatically redirected to the format you mention (hostname raw.github.com
). When in doubt, browse to the file in question on github.com and click on the 'Raw' button.
Go to DownGit - Enter Your URL - Simply Download
No need to install anything or follow complex instructions; especially suited for large source files.
https://cloud.githubusercontent.com/assets/5456665/17822364/940bded8-6678-11e6-9603-b84d75bccec1.gif
You can download individual files and directories as zip, and also create download link.
Disclaimer: I am the author of this tool.
According to this gist, you can use wget or cURL:
Click the file name in a GitHub repo. Click Raw to display the file contents. Copy the URL in your browser. In the command line, run either: wget --no-check-certificate --content-disposition https://URL-from-step3/ curl -LJO https://URL-from-step3/ One more: in RHEL7.6, run the following: wget https://URL-from-step3/ --output-document=FILE_NAME
wget
followed by the raw path to the C source file I wanted after viewing the file in the github repository and clicking the Raw button. Worked like a champ with Raspbian on my Raspberry Pi 3.
You can use the V3 API to get a raw file like this (you'll need an OAuth token):
curl -H 'Authorization: token INSERTACCESSTOKENHERE' -H 'Accept:
application/vnd.github.v3.raw' -O -L
https://api.github.com/repos/*owner*/*repo*/contents/*path*
All of this has to go on one line. The -O
option saves the file in the current directory. You can use -o filename
to specify a different filename.
To get the OAuth token, follow these instructions.
I've written this up as a gist as well.
You can use curl
this way:
curl -OL https://raw.githubusercontent.com/<username>/<repo-name>/<branch-name>/path/to/file
O
means that curl downloads the content
L
means that curl follows the redirection
This is now possible in GitHub for any file. You need to translate your files for raw.github.com. For example, if your file is in your repository at:
https://github.com/<username>/<repo>/some_directory/file.rb
Using wget you can grab the raw file from:
https://raw.github.com/<username>/<repo>/<branch>/some_directory/file.rb
Rails Composer is a great example of this.
GitHub Mate makes single file download effortless, just click the icon to download, currently it only work on Chrome.
https://lh4.googleusercontent.com/pmnJq0W-odK3qaoFydvC2a9QZcFvVsldrS51-BCJsNj4PL1a0N24RDN6eK1dLV7Mu5esuR54PQ=s640-h400-e365-rw
2019 Summary
There are a variety of ways to handle this, depending on how large the file is, whether or not you need to download folders in addition to files, and if you plan to do this manually or programmatically.
There are six options summarized below. And for those that prefer a more hands-on explanation, I've put together a YouTube video: Download Individual Files and Folders from GitHub.
Also, I've posted a similar answer on StackOverflow for those that need to download single folders/directories from GitHub (as opposed to files).
1. GitHub User Interface
There's a download button on most images.
There's a download button on the repository's homepage. Of course, this downloads the entire repo, after which you would need to unzip the download and then manually drag out the specific files you need.
2. Browser Context Menu
Go to the file on GitHub, right click on the "Raw" button to open the browser's context menu. From there, if you're using Google Chrome, select "Save Link As...". Other browser's will have a similar UI, but the selection description may vary. For example, it will be listed as "Download Linked File" and "Download Linked File As" on Safari.
3. Third Party Tools
There are a variety of browser extensions and web apps that can handle this, with DownGit being one of them. Simply paste in the GitHub URL to the file and press the "Download" button. Note that the link should be the GitHub.com hosted repository view, as opposed to the direct file link. File link example: https://github.com/babel/babel-eslint/blob/master/lib/parse.js.
4. Subversion
GitHub does not support git-archive (the git feature that would allow us to download specific files). GitHub does however, support a variety of Subversion features, one of which we can use for this purpose. Subversion is a version control system (an alternative to git). You'll need Subversion installed. Grab the GitHub URL for the file you want to download. You'll need to modify this URL, though. You want the link to the repository, followed by the word "trunk", and ending with the path to the nested file. In other words, using the same file link that I mentioned above, we would replace "blob/master" with "trunk". Finally, open up a terminal, navigate to the directory that you want the content to get downloaded to, type in the following command (replacing the URL with the URL you constructed): svn export https://github.com/babel/babel-eslint/trunk/lib/parse.js, and press enter.
5. cURL
You'll need cURL installed. Go to the file on GitHub.com, left click on the "Raw" button to get to the direct file link, copy this URL, open a terminal, navigate to the directory that you want the content to get downloaded to, type in the following command, replacing the filename with whatever you want to name it, and replacing the URL with the one you just copied: curl -o parse.js https://raw.githubusercontent.com/babel/babel-eslint/master/lib/parse.js.
6. GitHub API
This is actually what DownGit is using under the hood. Using GitHub's REST API, make a GET request to the content endpoint. The endpoint can be constructed as follows: https://api.github.com/repos/:owner/:repo/contents/:path. After replacing the placeholders, an example endpoint is: https://api.github.com/repos/babel/babel-eslint/contents/lib/parse.js. This gives you JSON data for that file, including a download URL (the same download URL that we used in the cURL example above). This method isn't all that useful for a single file, though (you'd be more likely to use it for downloading a specific folder, as detailed in the answer that I linked to above).
-o parse.js
can be replaced with -O
to write the file with the same name as the remote file.
There is a chrome extension called Enhanced Github
It will add a download button directly to the right of each file.
https://i.stack.imgur.com/mF2EL.png
In case you want to download a zip file from github
using wget
wget -O filename.zip https://github.com/downloads/user/repository/filename.zip?raw=true
see this website for more details
To follow up with what thomasfuchs said but instead for GitHub Enterprise users here's what you can use.
curl -H 'Authorization: token INSERTACCESSTOKENHERE' -H 'Accept: application/vnd.github.v3.raw' -O -L https://your_domain/api/v3/repos/owner/repo/contents/path
Also here's the API documentation https://developer.github.com/v3/repos/contents
https://your_domain/api/v3/repos/{owner}/my-repo/contents/x/y/z.txt
In 2021 GitHub added a new feature of opening visual studio code right on the web. You can launch it by just pressing full stop aka period key .
, when you are in any repository.
So for downloading any specific file you can launch the vscode by pressing .
key then it will display all files of the repository in vscode there you can download any file you want by right click
> dowload
.
https://i.stack.imgur.com/TMP4X.png
On github, open the file you want to download Locate the "Raw" button adjacent to the "Blame" button Press "Alt" on your keyboard and left-click on your mouse at the same time The file will download automatically in a ".txt" format (it did for me) Change the ".txt" extension to ".csv" extension manually
This worked for me and I hope it does for you too.
Copy page link simply In command line type: wget -L (exact copied link) Just replace blob to raw in step 2 Enter
You should just do it with the raw
URL of your file.
For example to download the README of AFNetworking:
curl https://raw.githubusercontent.com/AFNetworking/AFNetworking/master/README.md > ADREADME.md
As it is a public repo you don't need any credentials. Please note the kind of url: raw.githubusercontent.com/path/to/file
curl
and the output redirection with >
This method works for Windows as I have never used MAC so I don't know what are the alternate keys in MAC for the keys which I'm going to mention below.
Let's talk about the CSV files. IF you want to download the CSV file:
Go to that particular dataset that you want to download and click on it. You will see "Raw" button on the top right side of the dataset. Press "Alt" and then left click the "Raw" button. The whole CSV will download in your system.
Remeber, you have to press Alt and left click simultaneously. Just clicking the "Raw" button will open up the CSV in the browser.
I hope that helps.
GitHub Releases feature
Rather than link to download a specific file within the repo, you should use GitHub's Releases feature to associate downloadable data (such as compiled binaries) with the tagged version of the source code used to generate that data.
https://github.com/blog/1547-release-your-software
We're excited to announce Releases, a workflow for shipping software to end users. Releases are first-class objects with changelogs and binary assets that present a full project history beyond Git artifacts. Releases are accompanied by release notes and links to download the software or source code. Following the conventions of many Git projects, releases are tied to Git tags. You can use an existing tag, or let releases create the tag when it's published.
https://i.stack.imgur.com/XKwa6.jpg
releases
2. Click on the commit number. 3. Find the file you want, click on the three dots ...
and select View file
4. Click on View raw
to download the file!!!
To download a file from a Github repo, use the 'curl' command with the link to the raw file.
curl https://raw.githubusercontent.com/user/repo/filename --output filename
Add the --output option followed by the new filename to download the raw file to the newly created file.
This would definitely work. At least in Chrome. Right click on the "Raw" icon -> Save Link As.
The page you linked to answers the first question. GitHub also has a download facility for things like releases. Google Code does not have Git at all. GitHub, Google Code and SourceForge, just to start, are free hosting. SourceForge might still do CVS.
I recently found a service called gitzip
and its also open source:
site - http://kinolien.github.io/gitzip/
repo - https://github.com/KinoLien/gitzip
Vist the above site, enter the repo or directory URL, you can download individual files or whole directory as a zip file.
jszip.min.js
from that repository? troll face
Now it's possible to download any file or any particular folder within the repository using this google chrome extention:
GitZip for github : link : https://chrome.google.com/webstore/detail/gitzip-for-github/ffabmkklhbepgcgfonabamgnfafbdlkn
Usage :
In any GitHub public repos page. Just double click on the items you need. Click download button at bottom-right. See the progress dashboard and wait for browser trigger download. Get the ZIP file.
https://i.stack.imgur.com/vzxOd.png
https://i.stack.imgur.com/xifhQ.png
I think the new url
structure is raw.giturl
for example:
If you happen to use curl and firefox... you could use the cliget add-on which generates a curl call including all authentication mechanisms (aka cookies).
So right click on the raw
button cliget->"copy url for link" and then paste that into a shell. You will get your file even if you had to log-in to see it.
Go to the script and click "Raw"
Then copy the link and download it with the aria2c link.
Eg: aria2c https://raw.githubusercontent.com/kodamail/gscript/master/color.gsf
Trick: the file I wanted to download is, https://github.com/kodamail/gscript*/blob*/master/color.gsf
just modify the link into https://raw.githubusercontent.com/kodamail/gscript/master/color.gsf
Remove the italic texts and add bold texts in the same format, it will give you the right link.
which can be used with aria2c,wget or with curl, I used aria2c here.
My simple way to do it is:
click the 'Raw' button to get the file contents of github_csv.csv shown on the browser. Then create file.csv and open it in a text editor like notepad Then copy the file content from the website and paste it on the file.csv Your file.csv is github_csv.csv
On a Mac or Linux install jq and use it to extract the file from Github like this:
curl -H 'Authorization: token <ACCESS_TOKEN>' \
-H "Accept: application/vnd.github.v3+raw" -L \
https://api.github.com/repos/MY-ORG/MY-REPO/contents/MY-FILE-PATH | \
jq -r '.content' | base64 --decode > MY_FILE_NAME.txt
Documentation for the above command can be found here.
On the right hand side just below "Clone in Desktop" it say's "Download Zip file" Download Zip File Extract the file
For users with GitHub Enterprise you need to construct URL in following scheme
Invoke-WebRequest http://github.mycompany.com/api/v3/repos/my-org/my-repo/contents/myfiles/file.txt -Headers @{"Authorization"="token 8d795936d2c1b2806587719b9b6456bd16549ad8"}
Details can be found here
http://artisticcheese.blogspot.com/2017/04/how-to-download-individual-files-from.html
Success story sharing