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