How to clone all repositories in a Github Organization

I wanted to download and have all the repositories that we have at connectedcars on a single place on my computer so that I could easily go into each project. It would take me quite a way to go a find the url one by one and copy-and-paste to the git clone command. I knew you could get the repos from the Github API and I had already a Github Personal Access token in my bash profile.

So i could first get all the repositories like this

curl -s https://$

I needed to put -s in front so that the output of was as not carried on to the next command.

You would get a huge object like something like this for each:

Then I can use the really cool JSON parser called jq and read the ssh-url from each object inside the array:

jq .[].ssh_url

Really simple and effective!

Then we can call the tool xargs which is made to call a command for each item it gets from the previous command.

xargs -n 1 git clone

We have to tell xargs only to take 1 at a time because git can’t clone multiple repositories at a time. The url will then get be appended to the end of git clone and all put together it look like this:

$ curl -s https://$ | jq .[].ssh_url | xargs -n 1 git clone

And when you run it, it will fairly quickly clone all your repositories.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.