最近、異なるGithubアカウントを使用して異なるリポジトリにアクセスする必要があるため、作業用のコンピュータで設定を完了しました。これで自由にアカウントを切り替えて異なるリポジトリにアクセスできます。
- 各アカウントのためにssh キーを作成します。
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/github_a
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/github_b
- 公開鍵(github_a.pub、github_b.pub)をそれぞれの Github > settings > SSH and GPG keys に追加します。
- ssh-agent をバックグラウンドで起動します。
$ eval "$(ssh-agent -s)"
- 作成したキーの秘密鍵を ssh に追加します。
ssh-add ~/.ssh/github_a
ssh-add ~/.ssh/github_b
- ~/.ssh/config を編集します。
vim ~/.ssh/config
Host gtihub_q
HostName github.com
AddKeysToAgent yes
User git
UseKeychain yes
IdentityFile ~/.ssh/github_a
Host github_b
HostName github.com
AddKeysToAgent yes
User git
UseKeychain yes
IdentityFile ~/.ssh/github_b
- コマンドを使用してログインし、プロジェクトをクローンします。
ssh -T git@github_a
git clone git@github_a:XXXXX/XXXXX.git
ここで重要なのは、クローンする際にリポジトリのデフォルトのコマンドを変更することです。
git clone [email protected]:XXXXX/XXXXX.git
をgit clone git@github_a:XXXXX/XXXXX.git
に変更します。
- 既にクローンされているプロジェクトの場合、リモートのソースを変更する必要があります。元のソースを次のように変更します。
origin [email protected]:xxxxx/xxxxx.git (fetch)
origin [email protected]:xxxxx/xxxxx.git (push)
次のように変更します。
origin git@github_a:xxxxx/xxxxx.git (fetch)
origin git@github_a:xxxxx/xxxxx.git (push)
これで異なるリポジトリにアクセスするためにアカウントを切り替える必要がなくなりました。