GitHub の複数のリポジトリをまとめて private にする
はじめに
新年に向けて GitHub で特に公開している必要もないリポジトリをまとめて private にしたいと思い、調べたことをまとめる。
GitHub CLI(gh
)を使う。
GitHub CLI をインストールする
macOS の場合。
1brew install gh
gh auth login で GitHub にログインする
GitHub CLI で GitHub にログインする。
1gh auth login
例えば、以下のような形式でログインする。
1? What account do you want to log into? GitHub.com
2? What is your preferred protocol for Git operations on this host? HTTPS
3? Authenticate Git with your GitHub credentials? Yes
4? How would you like to authenticate GitHub CLI? Login with a web browser
5
6! First copy your one-time code: 60BF-3927
7Press Enter to open github.com in your browser...
8✓ Authentication complete.
9- gh config set -h github.com git_protocol https
10✓ Configured git protocol
11✓ Logged in as kimizuy
gh repo list でリポジトリ一覧を取得する
gh repo list
でリポジトリ一覧を取得する。42
の部分は取得するリポジトリ数なので、適宜変更する(デフォルトのリスト取得数は 30)。
1gh repo list -L 42 --visibility public --json name
以下のような形式で出力される。
1[
2 {
3 "name": "repo1"
4 },
5 {
6 "name": "repo2"
7 },
8 {
9 "name": "repo3"
10 }
11]
上記のリストから公開しておきたいリポジトリは除外しつつ、適当な方法で("repo1" "repo2" "repo3")
みたいな形式にする。
gh repo edit で private にする
ループを回してリポジトリを private にしていく。kimizuy
の部分は自分のユーザ名に置き換える。
1repos=("repo1" "repo2" "repo3")
2for repo in "${repos[@]}"; do
3 gh repo edit "kimizuy/$repo" --visibility private
4done
もう一度 private になっていることを確認する
1gh repo list -L 42
INFO
の部分がprivate
になっていれば成功。