Updated at [2017-12-27 水 16:58]
後來覺得這篇文章原本講的方法實在太麻煩了,而且當你有用 submodule 時會有問題 (總不能直接改 submodule 的 git repo URL 吧),剛好發現一個好辦法:使用環境變數 GIT_SSH_COMMAND ,如下:
1
| GIT_SSH_COMMAND="ssh -i ~/.ssh/COMPANY_KEY" git clone git@github.com:foo/bar
|
但這樣每次都要打前面那一串很麻煩,不如直接 export ,例如我自己是寫了個簡單的 alias 到 ~/.zshrc 裡面:
1 2
| alias set-company-git-ssh='export GIT_SSH_COMMAND="ssh -i ~/.ssh/COMPANY_KEY"; export PS1="${PS1}COMPANY ==> "'
|
這樣下了 set-company-git-ssh 後就可以安心使用 git ,連 zsh 的 $PS1 (prompt) 都會變,一目了然。
順帶一提,npm install 自己也會去吃 GIT_SSH_COMMAND ,很方便。
使用情境
工作上需要用公司的 email 申請一個新的 Github 帳號,這樣一來我的系統上就有兩個 Github 帳號用於開發…orz,總之今天摸索了一下多重 SSH key / GitHub 帳號時的應對方式。
需求
- 透過 SSH 而不是 HTTPS 來
clone / fetch / push (這樣就不需要每次 push 都輸入 GitHub 帳號密碼)
- 兩個帳號:
- 平常自己用的 GitHub 帳號
- 公司用的 Github 帳號 (以下假設為 `YOU@COMPANY.com`)
- 在 clone 時就決定用哪個帳號來
clone。
- 以後
git push 時,根據 clone 時選的帳號,來自動選擇正確的 SSH key。
| 協定 |
長怎樣 |
需要 Github 密碼 |
| SSH |
`git@github.com:USERNAME/REPONAME.git` |
不用 |
| HTTPS |
https://github.com/USERNAME/REPONAME.git |
每次 push 都要 |
1. 建立新的 SSH key 並綁定該 Key 給 Github 帳號
因為現在一組 SSH key 只能綁一個 Github 帳號(就算可以綁多個我也不太建議,你會很混亂),所以我們要建立一個新的:
Read More