快速設置Git,以後git pull
git push
都不用再打帳號密碼了。
首先要分辨你的git connection是屬於哪一種:
按下綠色button後預設是用https,再按"Use SSH"才會是ssh。
1. Connecting over HTTPS (password caching)
例如: git clone https://github.com/{username}/{repo name}.git
設置步驟(Mac):
查看有沒有安裝osxkeychain helper:
git credential-osxkeychain
如果沒有可以用brew安裝:brew install git
git config --global credential.helper osxkeychain
然後下次需要輸入時就可以把username和password都存到keychain,下次就不用再打帳號密碼了。
想移除的話只要git credential-osxkeychain erase
就可以了。
無法移除可以參考這裡
References:
Mac以外的系統看這裡
不建議的做法:
git remote set-url origin https://name:password@github.com/repo.git
這樣你的密碼會以plain text形式儲存在電腦。
2. Connecting over SSH (deploy keys)
例如: git clone git@github.com:{username}/{repo name}.git
設置步驟(Mac):
1. 創建ssh用的key
先檢查原本機內有沒有ssh key
ls -al ~/.ssh
如果發現
id_rsa.pub
可以跳過這步驟。
ssh-keygen -t rsa -b 4096 -C "xxx@xxx.com" # 換成你的Github account
Enter a file in which to save the key (/Users/xxx/.ssh/id_rsa): # 把enter按下去就是了
Enter passphrase (empty for no passphrase): # 可不填,這是用來加密你的private key讓其不會plain text地儲存在電腦
現在應該會有兩個新檔案:
- ~/.ssh/id_rsa: private key
- ~/.ssh/id_rsa.pub: public key
2. 把ssh key加到ssh-agent
當你的repo link是git@github.com:...
,每次git pull
或git push
之類的時候都會動用到ssh-agent。
- 在背景開啟ssh-agent:
eval "$(ssh-agent -s)"
更改
~/.ssh/config
:Host * AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsassh-add -K ~/.ssh/id_rsa
-K
代表Store passphrases in your keychain.
(如果設置了passphrase而沒有跟隨以上步驟,每次動用ssh的時候都會需要輸入一次passphrase。)
References:
passphrase問題
Mac以外的系統看這裡
3. 到Github加入你的public key
- 複製
~/.ssh/id_rsa.pub
檔的內容:pbcopy < ~/.ssh/id_rsa.pub
- 到Github repo setting加入新Deploy key
- Title只是用來分辨的名稱
- Key就是剛才複製的的public key
- Title只是用來分辨的名稱
References:
Mac以外的系統看這裡