最近在工作的電腦上需要使用不同的Github account 來存取不同的 Repo,在踩了一些雷後終於完成設定,現在可以自由的切換 account 來存取不同的 Repo 了。
- 為各自的帳號建立 ssh key
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)"
- 將剛剛產生的 key 的私鑰加進去 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
- 使用指令來登入並 clone 專案
ssh -T git@github_a
git clone git@github_a:XXXXX/XXXXX.git
這邊滿重要的是你在 clone 時去修改 repo 給你的預設指令
將git clone [email protected]:XXXXX/XXXXX.git
改成git clone git@github_a:XXXXX/XXXXX.git
- 如果是已經 clone 的專案就需要修改 remote 的來源,將原本來源
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)
這樣就可以不用在一直切帳號來存取不同的 repo 了。