在 Git 和 Github 中使用多個帳號
Git 教學現在有獨立的網站了!請移駕 Git 零到一百。
在公司專案和個人 專案切換時需要兩個不同帳號分開,本文會說明如何設定,內容包含以下:
- 建立和管理新的 SSH 帳號
- 臨時儲存庫如何手動設定
- 使用設定檔自動管理不同儲存庫的設定
會把臨時設定放進來的原因是這樣永遠有備援方案可用,而且也直觀清楚的知道設定了什麼(雖然自動設定也很直觀就是了)。
新增 SSH 金鑰
基本上內容和遠端儲存庫裡面說的一樣只有微幅調整,本段落來自於 Github 官方教學 Generating a new SSH key and adding it to the ssh-agent,保證絕對正確
ssh-keygen -t ed25519 -C "your_email@youremail.com"
建立金鑰- 老電腦不支援 ed25519 就改用
ssh-keygen -t rsa -C "your_email@youremail.com"
- 下一步是輸入金鑰位置,建議輸入完整路徑而不是
~
縮寫 - passphrase 是金鑰額外的密碼
- 老電腦不支援 ed25519 就改用
- 設定金鑰
Host github.com-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_personal
IdentitiesOnly yes
和教學不一樣的是因為我們有多帳號,所以 Host/User 名稱略有不同
- 管理金鑰
使用此指令加入剛才新增的金鑰,要加入才能用:
ssh-add ~/.ssh/id_personal
刪除則使用 ssh add -d ~/.ssh/id_personal
, ssh-add -D
刪除全部, ssh-add -l
列出金鑰
- 上傳 Github
私鑰放在電腦中永遠不要外流,複製公鑰 (xxx.pub
),進入 Github 新帳號的設定頁面,看到左側側邊欄,找到 SSH,點擊進入後新增並且貼上剛才的公鑰。
- 測試連線
ssh -T github.com-personal
這時應該要顯示新帳號的名稱才正確。
臨時專案手動設置
克隆專案
請使用 SSH 方式克隆:
git clone git@github.com:用戶名稱/儲存庫名稱.git
危險
Github 連線方式有 HTTPS 和 SSH,如果直接使用網址路徑作為 remote,Git 會使用 global 設定而不是 local 設定!
確保你的 remote 使用 git@github.com...
設定才能正確使用 SSH 傳輸,否則你推不上去。
資訊
網路說 clone 方式 SSH 比 HTTPS 安全完全是胡謅,這裡就不深入解釋,只是導正錯誤觀念。
設定專案
Clone 下來還是會套用 global 設定,所以要用 local config 覆蓋:
git config --local user.name "personal"
git config --local user.email "personal@gmail.com"
# 設定 remote URL 使用對應的 SSH Host
git remote set-url origin git@<你剛才設定的 SSH Host 名稱>:<Github 用戶名稱>/<Repo 名稱>.git
最後檢查設定
git config --local --list
這樣就完成了。