前言
公司也使用 Github,導致會有一台電腦需要將程式碼上傳到不同 GitHub 帳號的煩惱,一開始試過直接設定 git config –global 來切換帳號但是沒有成功,後來使用 ssh(公私鑰)就OK了,因此來寫一下筆記。
1. 在電腦產生公鑰私鑰
1 | ssh-keygen -t rsa -C "your email" |
接下來會填入你想存放 key-pair 的路徑及設定密碼,我就是照原本預設路徑存放。存放完成會有 id_rsa, id_rsa.pub, id_rsa.pub 為公鑰,id_rsa 為私鑰。
2. 把 SSH-KEY(公鑰:.pub)貼到要操控的 GitHub 帳號上
3. 將私鑰加到 ssh-agent 中
1 | ssh-add ~/.ssh/id_rsa |
ssh-agent 是什麼? > (一個作業系統內建幫忙管理 ssh keys 的背景程式,讓使用者只需要輸入一次密碼往後就可以用密鑰自動登入)
4. 新增/修改 Config 的檔案資料:在/.ssh 裡面我原本沒有 git config 檔,所以直接新增一個新的。
1 | vi config |
Host <別名>
HostName <要連的網站>
IdentityFile <私鑰>
1 | ----config裡面---- |
更新
User <user 設定>
*以為設定 user 可以變 user@別名
的方式連線,但無效。
設定完連線一樣是 git 開頭 -> git@別名 連線
5. 測試是否連線成功:第一次連線會詢問你是否確定 connecting,選擇 yes,成功會顯示 successfully 的字樣~
1 | 第一個帳號測試連線 |
6. 實際用 github 操作 repo 測試
7. 取消原本 global 的設定
1 | git config --global --unset user.name |
完成之後再用 $git config --list
指令查看,原本設定的 user.name & user.email
就已經不見囉
** 可以在個別的專案再設定 email, user$git config user.email "your email"
$git config user.name "your name"
補充
舊的 git url 連不到了,使原本設定的 remote 要更新。
(先設定好新的 ssh,確定新的有連到再換 url 喔~)
1 | origin git@github:xxx.git (fetch) |
git remote set-url origin <新的url>
就覆蓋掉原本舊的了。
git remote -v
重新查看會看到新的連結喔,像這樣。
1 | origin git@chi:xxx.git (fetch) |
個人心得紀錄
目前把公司的設定 ssh 而已,另外一個帳號還是用 http clone,不曉得之後會不會遇到什麼問題,可能可以觀察一下再做更新。另外公鑰私鑰的部分仍還需要多了解一些,下面放的另外兩篇文章會再看一下。
—
資料來源:
Changing a remote repository’s URL
config 管理多個網站的 ssh key
如何在一台電腦使用多個 Git 帳號
Security 你該知道所有關於 SSH 的那些事
ssh agent 详解