GitHub: Script to Mass Delete Repos
Delete GitHub repositories programmatically from a CSV file
Overview
If you’ve ever had to delete several repositories in GitHub, you know it can be a pain as you have to copy/paste the name of each repo in the verification prompt. This script aims to simplify that by providing a list of repositories that you want to delete in a CSV, and then looping through each repo and deleting it with the gh cli
.
The Scripts
These scripts are in my github-misc-scripts repo:
Using the Scripts
Prerequisites
- You need to make sure to have the
gh cli
installed and authorized (gh auth login
). - Add the
delete_repo
scope:1
gh auth refresh -h github.com -s delete_repo
Usage
- Prepare a list of repositories that you want to delete and place in a CSV file, one per line, with the last line empty.
- You can use the
generate-repositories-list.sh
script to generate a list of repos in a GitHub org, and then modify accordingly:1
./generate-repositories-list.sh joshjohanning-org > repos.csv
- Or, create your own CSV file with the list of repos you want to delete, one per line, and leave a trailing empty line/whitespace at the end of the file. The file should look like:
1 2 3
org/repo1 org/repo2
- You can use the
- From there, it’s pretty simple - run the script, passing in the
repos.csv
file:1
./delete-repositories-from-list.sh repos.csv
Summary
If you accidentally delete a repository that you didn’t mean to, the good news is that you have 90 days to recover it in most cases (with some caveats for forks).
Hopefully this script saves you some time in the UI copy/pasting repo names when you want to do some spring cleaning!
This post is licensed under CC BY 4.0 by the author.