githubが整理されてなさすぎる
自分は前職はまったくITとは無縁の職種からエンジニアに転職したため、一度G's ACADEMYというスクールに通ってからこの業界に飛び込んだのですが、独学時代も含めそれまでに作成したリポジトリがpublicで放置された状態になっていました。
今回整理する機会があり、まずはリポジトリをpublicからprivateにするところからだな、と思い効率的に切り替える方法を探していました。
方法は3つある
リポジトリの内容を切り替える方法はいくつかあります.
- GitHub GUIでリポジトリをPrivateに変更する
- GitHub CLIを使用する
- GitHub APIを使用する
今回は最も効率的であるGitHub CLIを使用するを採用します。
GitHub CLIを使用する方法
1. GitHub CLIをインストールする(未インストールの場合)
コマンドライン(macOSならターミナル)を開いてgh
コマンドが使用できない場合は以下コマンドでインストールします。
# macOS (Homebrew)
brew install gh
# Ubuntu/Debian
sudo apt install gh
# Windows (Scoop)
scoop install gh
2. インストールしたらGitHub CLIにログイン
以下コマンドでログインします。
gh auth login
ログイン時、色々質問されますが、ご自身の設定に合わせて選択していただければ問題ありません。
(自分はSSHキーを選択してブラウザログインしました)
補足
SSHキーを選択した場合は以下手順でログインできます。
1. SSHキーのアップロードについて
GitHub CLIがあなたのローカルマシンにあるSSHキーをGitHubアカウントにアップロードしようとしています。id_rsa.pub はSSH公開鍵です。GitHubに登録することで、安全にリポジトリにアクセスできます。
質問: Title for your SSH key
何を入力するか: このSSHキーを区別しやすい名前を入力してください。
My MacBook SSH Key for GitHub
これは、GitHubの「SSH and GPG keys」設定ページで、このキーを識別するためのラベルです。
好きな名前で問題ありません。
もしSSHキーがまだ作成されていない場合、以下のコマンドで新しいSSHキーを作成できます
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
作成された公開鍵(~/.ssh/id_rsa.pub)をGitHub CLIが自動的に利用します。
3. GitHub CLIでリポジトリをPrivateに一括変更
以下のコマンドで一括変更可能です。
XXXXXXの部分はご自身のユーザー名に変更してください
gh repo list XXXXXX --limit 1000 --json name,visibility | jq -r '.[] | select(.visibility=="PUBLIC") | .name' | while read repo; do
echo "Processing $repo..."
gh repo edit XXXXXX/$repo --visibility private --accept-visibility-change-consequences
echo "$repo has been made private"
done
※jqコマンドが使用できない場合は以下のコマンドでインストールしてください(jqはJSONデータを操作するツールです)
# macOS
brew install jq
# Ubuntu/Debian
sudo apt install jq
実行後は以下のコマンドで変更状態を確認できます。
gh repo list XXXXXX --limit 1000 --json name,visibility
補足
- 特定のリポジトリのみpublcにしたい場合
gh repo edit YOUR_USERNAME/REPO_NAME --visibility public --accept-visibility-change-consequences
- 特定のリポジトリのみprivateにしたい場合
gh repo edit YOUR_USERNAME/REPO_NAME --visibility private --accept-visibility-change-consequences
以上、ぜひリポジトリの整理の際の参考になれば幸いです!