Search code examples
gitgithubgit-clone

How to clone all repos at once from GitHub?


I have a company GitHub account and I want to back up all of the repositories within, accounting for anything new that might get created for purposes of automation. I was hoping something like this:

git clone git@github.com:company/*.git 

or similar would work, but it doesn't seem to like the wildcard there.

Is there a way in Git to clone and then pull everything assuming one has the appropriate permissions?


Solution

  • I don't think it's possible to do it that way. Your best bet is to find and loop through a list of an Organization's repositories using the API.

    Try this:

    • Create an API token by going to Account Settings -> Applications
    • Make a call to: http://${GITHUB_BASE_URL}/api/v3/orgs/${ORG_NAME}/repos?access_token=${ACCESS_TOKEN}
    • The response will be a JSON array of objects. Each object will include information about one of the repositories under that Organization. I think in your case, you'll be looking specifically for the ssh_url property.
    • Then git clone each of those ssh_urls.

    It's a little bit of extra work, but it's necessary for GitHub to have proper authentication.