Skip to content

Instantly share code, notes, and snippets.

Created March 10, 2014 23:34
  • Star 61 You must be signed in to star a gist
  • Fork 13 You must be signed in to fork a gist
Star You must be signed in to star a gist
What would you like to do?
Download a single file from a private GitHub repo. You'll need an access token as described in this GitHub Help article:
curl -H 'Authorization: token INSERTACCESSTOKENHERE' -H 'Accept: application/vnd.github.v3.raw' -O -L
Copy link

emmahsax commented Nov 22, 2019

Ah I figured it out. This works!

REPO_DOWNLOAD_URL=$(curl -u "${ACCESS_TOKEN}:" -s | \
  awk '/tag_name/ {print "" substr($2, 2, length($2)-3) ""}'

curl -u "${ACCESS_TOKEN}:" -LkSs "{$REPO_DOWNLOAD_URL}" -o - | tar xzf -

This finds the latest release for repository owner-name/repo-name, and then grabs the tar of it and opens it up in the current directory. A user just needs an Oauth access token!

Copy link

jakeonfire commented Dec 24, 2020

when using -O to save a file with the same name, it includes request params in the file name. so i prefer setting ref via -d like this:

curl -GLOf -H "Authorization: token ${GITHUB_TOKEN?not set}" -H "Accept: application/vnd.github.v4.raw" \
  "$ORG/$REPO/contents/$FILEPATH" -d ref="$REVISION"

-G causes data (specified by -d) to be added as URL request params, but not the saved filename. -f ensures if there is an issue, like 401 bad auth, the command returns an error instead of just saving the file with the error response.

Copy link

porthunt commented Aug 6, 2021

I've created this simple gist in case someone needs to download a json file from a private repository and use it as a dictionary:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment