一台電腦兩個GitHub帳戶
我的系統
macOS Monterey 12.4
你所使用的 SSH 密鑰決定了你是否有權限訪問某一個GitHub帳號底下的倉庫
而你本地倉庫設置的 ** use email 則決定了在 GitHub 的commit 記錄中的使用者 **
而一般在沒有進行以下配置的情況下,你的電腦只會默認使用一個SHH 密鑰進行連接
這就導致了你只能訪問一個GitHub 賬號
生成密鑰
首先是生成兩個SSH密鑰
分別是對應你的兩個身份:
身份A
身份B
找到 ~/.ssh
$ cd ~/.ssh
如果沒有 /.ssh
就建立一個
mkdir ~/.ssh
chmod 700 ~/.ssh
生成密鑰
$ ssh-keygen -t rsa -C “youremail@gmail.com”
ssh-keygen
是用來建立 key 的指令-t rsa
則是要建立金鑰的類型,這邊選 rsa-C “身份A@gmail.com”
是要幫你的公開金鑰檔案結尾加上註解,讓你辨識用,通常會使用電子信箱,也可以使用任何你方便的記號。
輸入之後,會問問題:
Enter file in which to save the key (/Users/myaccount/.ssh/id_rsa):
這邊輸入你想取的金鑰名稱,如果想取 personal 的話,就輸入 /Users/cyen/.ssh/id_rsa_personal
如果不取名字,會覆蓋前面的金鑰。
取名字會比較好分辨。Enter passphrase (empty for no passphrase):
接下來會問你要不要設定密碼,如果有設定,每次使用這個 key 都要輸入密碼。如果不要設密碼,直接按 enter 就好。
下一題是再打一次密碼,沒設定的話繼續按 enter 就好
建立好之後你,你可以輸入 ls 查看,應該會生成兩個金鑰,有 .pub 副檔名的是公鑰,沒有的是私鑰。
//結果:
id_rsa_personal #私鑰
id_rsa_personal.pub #公鑰 ==> 要放在 github 裡面
第二個金鑰可以依照上面步驟再生成一個。
設定 SSH-KEY 公鑰 - Github
先複製公鑰
$ pbcopy < ~/.ssh/id_rsa_personal.pub
新增到 github
接著到 github 點右上角的頭像 => Settings
=> SSH and GPG keys
=> new ssh key
=> 在 key 那邊貼上剛剛複製的(title 沒輸入也可以,如果你只會有這個key)
=> add ssh key
SSH 設定
打開 .ssh 底下的 config 檔案
$ vim config
//. 或是用其他文字編輯器打開
如果沒有,就建一個
$ touch config
config 設定
# 預設帳號 (個人帳號)
Host personal
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_personal
# 工作帳號
Host work
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_work
# 其他帳號 ...
主要要設定是 Host 跟 IdentityFile
Host 後面的名稱可以自己取
等一下會用到
IdentityFile 則是 ssh key 的檔案名稱
這裡使用私鑰
修改完之後,測試一下
$ ssh -T git@github_personal //身份A
$ ssh -T git@github_work //身份B
如果都能回應如下,應該就是成功了:
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.
Git 設定
如果這部份沒有設定,等等在 push 時
不是 push 失敗
不然就是 commit 會出現兩個身份
删除全域設定
$ git config --global --unset user.name
$ git config --global --unset user.email
本地設定
$ git config --local user.name xxxx
$ git config --local user.email xxx
因為全域已經刪除設定了,所以如果要切換身份上傳的話,都要重新輸入一次。
設定 git remote
如果這個專案還沒有設定 git remote
$ git remote add origin git@personal:你的github帳號/你的github資料夾.git
git@ 後面是剛剛上面的 Host
如果這個專案已經設定過 git remote
先進到這個專案的根目錄
進入 .git
打開 config
$ cd .git
$ vim config
編輯此處:
[remote "github"]
url = git@personal:你的github帳號/你的github資料夾.git
fetch = +refs/heads/*:refs/remotes/github/*
改完記得要儲存。