【小ネタ】不要な GitHub リポジトリを一括削除する

2021.07.13

みなさん、GitHubでリポジトリを作成した後、「やっぱり使用しないなぁ」ってことありませんか?

私もGitHubの勉強を始めた頃は、とりあえず作って放置していました。

その結果、リポジトリの数が70近くあったので、不要なリポジトリを一括削除してみました。

動作環境

  • Mac OS
  • GitHub CLI 1.12.1
  • jq 1.6

手順

GitHub CLI の alias登録

削除用のコマンドをaliasとして追加します。

gh alias set repo-delete 'api -X DELETE "repos/$1"'

また、権限を付与させるために以下のコマンドも実行させます。

gh auth refresh -h github.com -s delete_repo

一括削除のスクリプト作成

テキストファイル(delete.txt)から削除対象のリポジトリ名を読み込んで、先ほどのdelete_repoコマンドを実行させるシェルスクリプトを作成しました。

repo-all.sh

#!/bin/bash

echo -n "your user name:"
read uname 

while read line
do
  reponame=$uname"/"$line
  gh repo-delete $reponame
  echo "Delete "$reponame
done < delete.txt

delete.txt

hogehoge
fugafuga

実行してみる

実際にスクリプトを実行してみると、リポジトリが削除されていることが確認できます。

$ bash repo-all.sh
your user name:cH6noota
cH6noota/hogehoge Delete
cH6noota/fugafuga Delete

まとめ

Webページから行うよりも結構簡単にできた気がします!
リポジトリの削除するにあたって、ghのaliasを利用してみましたが、他の用途にも応用できそうですね。
(例えば、全リポジトリを取得するなど)

参考資料