如何設定與切換多組Github account

最近在工作的電腦上需要使用不同的Github account 來存取不同的 Repo，在踩了一些雷後終於完成設定，現在可以自由的切換 account 來存取不同的 Repo 了。

為各自的帳號建立 ssh key

Copy
ssh-keygen -t ed25519 -C "your_email_A@example.com" -f ~/.ssh/github_a

ssh-keygen -t ed25519 -C "your_email_B@example.com" -f ~/.ssh/github_b

將公鑰 (github_a.pub, github_b.pub) 新增到各自的 Github > settings > SSH and GPG keys

Start the ssh-agent in the background.

Copy
$ eval "$(ssh-agent -s)"

將剛剛產生的 key 的私鑰加進去 ssh 中

Copy
ssh-add ~/.ssh/github_a
ssh-add ~/.ssh/github_b

編輯～/.ssh/config

Copy
vim ~/.ssh/config

Copy
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

使用指令來登入並 clone 專案

Copy
ssh -T git@github_a
git clone git@github_a:XXXXX/XXXXX.git

這邊滿重要的是你在 clone 時去修改 repo 給你的預設指令
將git clone git@github.com:XXXXX/XXXXX.git
改成git clone git@github_a:XXXXX/XXXXX.git

如果是已經 clone 的專案就需要修改 remote 的來源，將原本來源

Copy
origin git@github.com:xxxxx/xxxxx.git (fetch)
origin git@github.com:xxxxx/xxxxx.git (push)

改成

Copy
origin git@github_a:xxxxx/xxxxx.git (fetch)
origin git@github_a:xxxxx/xxxxx.git (push)

這樣就可以不用在一直切帳號來存取不同的 repo 了。