Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Bulk delete github repos

Use this trick to bulk delete your old repos or old forks

(Inspired by https://medium.com/@icanhazedit/clean-up-unused-github-rpositories-c2549294ee45#.3hwv4nxv5)

  1. Open in a new tab all to-be-deleted github repositores (Use the mouse’s middle click or Ctrl + Click) https://github.com/username?tab=repositories

  2. Use one tab https://chrome.google.com/webstore/detail/onetab/chphlpgkkbolifaimnlloiipkdnihall to shorten them to a list.

  3. Save that list to some path

  4. The list should be in the form of “ur_username\repo_name” per line. Use regex search (Sublime text could help). Search for ' |.*' and replace by empty.

  5. Register a new personal access token with a 'delete_repo perm' https://github.com/settings/tokens/new

  6. Copy the access_token and run the following line replacing xxx with your access token.

Linux and OS X :

while read r;do curl -XDELETE -H 'Authorization: token xxx' "https://api.github.com/repos/$r ";done < repos

Windows:

get-content D:\repolist.txt | ForEach-Object { Invoke-WebRequest -Uri https://api.github.com/repos/$_ -Method “DELETE” -Headers @{"Authorization"="token xxx"} }

Caution

I have only tested this script on Linux.

Have fun :)

@Peripona

This comment has been minimized.

Copy link

@Peripona Peripona commented Oct 23, 2017

Hey, there is a better way to do it.

  1. Shared script to backup all repos
  2. Shared script and node js file to fetch and save all repo names
  3. and then delete all of them one by one.

I just deleted my 78 repos..

I created a small git project for this, hope it helps others
backup and deleteAllRepos

@bartoszmajsak

This comment has been minimized.

Copy link

@bartoszmajsak bartoszmajsak commented Jan 30, 2018

Or simply

http https://api.github.com/user/repos "Authorization:token $TOKEN" per_page==100 type==owner | jq '.[].full_name' | xargs -I '{}' http DELETE https://api.github.com/repos/'{}' "Authorization:token $TOKEN" 

Pre-req:

@adamvoss

This comment has been minimized.

Copy link

@adamvoss adamvoss commented Mar 11, 2018

Here is a variation on @bartoszmajsak's solution that uses curl instead of httpie to delete all repositories from an organization.

curl -u $USERNAME:$PASSWORD https://api.github.com/orgs/$ORG/repos | jq '.[].full_name' | tr -d '\r' | xargs -I '{}' curl -u $USERNAME:$PASSWORD -XDELETE https://api.github.com/repos/'{}'
@timdams

This comment has been minimized.

Copy link

@timdams timdams commented Mar 15, 2018

Great tip. Works in windows, but you might need to first run the following command in powershell (otherwise you might get an "can't create ssl/tls channel"exception)
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

@joesasson

This comment has been minimized.

Copy link

@joesasson joesasson commented May 15, 2018

Awesome!! Really helped me!
Something I encountered was that certain repos had titles after the repo path.
The regex wasn't working for VScode, so what I did was paste into google sheets (will work in excel also) and split by : then just pasted the first column into my final file.

@AmitaiB

This comment has been minimized.

Copy link

@AmitaiB AmitaiB commented Aug 24, 2018

Anybody know a way to bulk private-ize my repos?

@andybeak

This comment has been minimized.

Copy link

@andybeak andybeak commented Nov 4, 2018

The solutions above didn't work for me, so I approached this with https://gist.github.com/andybeak/602611212950559df9c102b0d1ae20c7
It works on Linux without needing jq or httpie. A bit hacky because it's hard coded to the current output format, but I don't do this task often enough to merit spending time on writing a beautiful automation script.

@careytews

This comment has been minimized.

Copy link

@careytews careytews commented Dec 11, 2018

Thank you!

@aug2uag

This comment has been minimized.

Copy link

@aug2uag aug2uag commented Jan 7, 2019

your method worked for me, here's how I ended up implementing it

#!/bin/bash

repos=(
	"username/repo1"
	"username/repo2"
	"username/repo3"
)

for i in "${repos[@]}"
do
   : 
   curl -XDELETE -H 'Authorization: token XXX' "https://api.github.com/repos/$i ";
done
@moollaza

This comment has been minimized.

Copy link

@moollaza moollaza commented Apr 1, 2019

In case anyone is interested, I built a little web app that helps you delete (or archive) multiple GitHub repos. It displays all your repos, and allows you to sort/filter them, and select which ones you want to modify. Under the hood, it just uses the GitHub API and an access token you provide.

You can try it out to at https://reporemover.xyz/.

It’s also open source, and available on GitHub.

@DavidGriswoldTeacher

This comment has been minimized.

Copy link

@DavidGriswoldTeacher DavidGriswoldTeacher commented May 14, 2019

In case anyone is interested, I built a little web app that helps you delete (or archive) multiple GitHub repos. It displays all your repos, and allows you to sort/filter them, and select which ones you want to modify. Under the hood, it just uses the GitHub API and an access token you provide.

You can try it out to at https://reporemover.xyz/.

It’s also open source, and available on GitHub.
@moollaza
I love this, but it doesn't give me a way to select repositories on organizations I have admin rights to. Any way to add that?

@moollaza

This comment has been minimized.

Copy link

@moollaza moollaza commented May 15, 2019

I love this...

Thanks for the feedback @DavidGriswoldTeacher. I'm glad to hear you like RepoRemover!

but it doesn't give me a way to select repositories on organizations I have admin rights to. Any way to add that?

There's actually an open issue already to add this. I spent a few minutes looking into it and I think it's possible, however when I was testing using the API, I couldn't get it to work. I'll have to spend more time investigating to see if its possible, but I expect it should be.

@singchan

This comment has been minimized.

Copy link

@singchan singchan commented Jun 20, 2019

Thx for the tip
For those who need to delete with a visual interface I use this online demo of cloud explorer, you can very quickly delete many repos
http://cloud-explorer.org/

@thall1961

This comment has been minimized.

Copy link

@thall1961 thall1961 commented Jul 30, 2019

@moolaza that's awesome just deleted like 70 repos! Upvoted!

@politician

This comment has been minimized.

Copy link

@politician politician commented Nov 7, 2019

I have made a Node.js CLI that lets you bulk publicize, privatize, clone and/or delete repos for a personal Github account or an organization.
https://github.com/incorrupt/bulkrepos
It should be helpful at least to the people who want to backup their repos before deleting them :)

@janosh

This comment has been minimized.

Copy link

@janosh janosh commented Dec 4, 2019

Just tried out RepoRemover. Works great! Thanks @moollaza!

@learning2016

This comment has been minimized.

Copy link

@learning2016 learning2016 commented Dec 29, 2019

Any of the above methods
I want to know
How do I remove Organizations' repositories in bulk
thank you!

@moollaza

This comment has been minimized.

Copy link

@moollaza moollaza commented Dec 29, 2019

@janosh you're welcome! I'm glad to hear it was useful :)

@learning2016 you can easily remove Org repos in bulk with https://reporemover.xyz

@FrancisCalizo

This comment has been minimized.

Copy link

@FrancisCalizo FrancisCalizo commented Jan 10, 2020

@moollaza You're awesome! Thanks!

@nk23x

This comment has been minimized.

Copy link

@nk23x nk23x commented Mar 2, 2020

thanks :)

@ingnelson

This comment has been minimized.

Copy link

@ingnelson ingnelson commented Jul 18, 2020

@moollaza thanks , it works for me

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.