首先確認(rèn)已安裝Git含末,可以通過 git –version
命令可以查看當(dāng)前安裝的版本。
Mac OSX 中都已經(jīng)安裝了Git即舌。但是佣盒,Git的版本未必是最新的。
可以通過命令 git clone https://github.com/git/git
進(jìn)行更新
Git共有三個(gè)級(jí)別的config文件顽聂,分別是system肥惭、global和local
盯仪。
在當(dāng)前環(huán)境中,分別對(duì)應(yīng)
%GitPath%\mingw64\etc\gitconfig文件
$home.gitconfig文件
%RepoPath%.git\config文件
其中%GitPath%
為Git的安裝路徑蜜葱,%RepoPath%
為某倉庫的本地路徑全景。
所以 system 配置整個(gè)系統(tǒng)只有一個(gè),global 配置每個(gè)賬戶只有一個(gè)牵囤,而 local 配置和git倉庫的數(shù)目相同爸黄,并且只有在倉庫目錄才能看到該配置。
大致思路
揭鳞,建立兩個(gè)密鑰炕贵,不同賬號(hào)配置不同的密鑰,不同倉庫配置不同密鑰野崇。
1. 清除 git 的全局設(shè)置(針對(duì)已安裝 git)
新安裝 git 跳過称开。
若之前對(duì) git 設(shè)置過全局的 user.name
和 user.email
。
類似 (用 git config --global --list
進(jìn)行查看你是否設(shè)置)
$ git config --global user.name "你的名字"
$ git config --global user.email "你的郵箱"
必須刪除該設(shè)置
$ git config --global --unset user.name "你的名字"
$ git config --global --unset user.email "你的郵箱"
2. 生成新的 SSH keys
1)GitHub 的鑰匙
指定文件路徑舞骆,方便后面操作:~/.ssh/id_rsa.gitlab
ssh-keygen -t rsa -f ~/.ssh/id_rsa.github -C "lx@qq.com"
直接回車3下钥弯,什么也不要輸入,就是默認(rèn)沒有密碼督禽。
注意 github 和 gitlab 的文件名是不同的脆霎。
2)GitLab 的鑰匙
ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitlab -C "lx@vip.qq.com"
2)Gitee 的鑰匙
ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitee -C "lx@vip.qq.com"
3)完成后會(huì)在~/.ssh / 目錄下生成以下文件
- id_rsa.github
- id_rsa.github.pub
- id_rsa.gitlab
- id_rsa.gitlab.pub
3.添加識(shí)別 SSH keys 新的私鑰
親測(cè)Mac下,新增一個(gè) id_rsa.gitee狈惫,沒加進(jìn)去 也識(shí)別到了睛蛛。 所以此步驟可忽略,如有問題刪除所有密鑰 重新按步驟操作一遍胧谈。
默認(rèn)只讀取 id_rsa忆肾,為了讓 SSH 識(shí)別新的私鑰,需要將新的私鑰加入到 SSH agent 中
$ ssh-agent bash
$ ssh-add ~/.ssh/id_rsa.github
$ ssh-add ~/.ssh/id_rsa.gitlab
$ ssh-add ~/.ssh/id_rsa.gitee
4. 多賬號(hào)必須配置 config 文件(重點(diǎn))
若無 config 文件菱肖,則需創(chuàng)建 config 文件
創(chuàng)建config文件
$ touch ~/.ssh/config
config 里需要填的內(nèi)容
親測(cè)可以不縮進(jìn)客冈,所以方便看,建議縮進(jìn)稳强。
最簡(jiǎn)配置
Host github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa.github
完整配置
#Default gitHub user Self
Host github.com
HostName github.com
User git #默認(rèn)就是git场仲,可以不寫
IdentityFile ~/.ssh/id_rsa.github
#Add gitLab user
Host git@gitlab.com
HostName gitlab.com
User git
IdentityFile ~/.ssh/id_rsa.gitlab
# gitee
Host gitee.com
Port 22
HostName gitee.com
User git
IdentityFile ~/.ssh/id_rsa.gitee
# 其他自己搭建的
Host git@git.startdt.net
Port 22
HostName http://git.startdt.net
User git
IdentityFile ~/.ssh/lab_rsa.startdt
下面對(duì)上述配置文件中使用到的配置字段信息進(jìn)行簡(jiǎn)單解釋:
Host
它涵蓋了下面一個(gè)段的配置,我們可以通過他來替代將要連接的服務(wù)器地址退疫。
這里可以使用任意字段或通配符渠缕。
當(dāng)ssh的時(shí)候如果服務(wù)器地址能匹配上這里Host指定的值,則Host下面指定的HostName將被作為最終的服務(wù)器地址使用褒繁,并且將使用該Host字段下面配置的所有自定義配置來覆蓋默認(rèn)的/etc/ssh/ssh_config配置信息亦鳞。Port
自定義的端口。默認(rèn)為22,可不配置User
自定義的用戶名燕差,默認(rèn)為git遭笋,可不配置HostName
真正連接的服務(wù)器地址PreferredAuthentications
指定優(yōu)先使用哪種方式驗(yàn)證,支持密碼和秘鑰驗(yàn)證方式IdentityFile
指定本次連接使用的密鑰文件
5.在 github 和 gitlab 網(wǎng)站添加 ssh
Github
直達(dá)地址:https://github.com/settings/keys
過程如下:
- 登錄 Github
- 點(diǎn)擊右上方的頭像谁不,點(diǎn)擊
settings
- 選擇
SSH key
- 點(diǎn)擊
Add SSH key
在出現(xiàn)的界面中填寫 SSH key 的名稱坐梯,填一個(gè)你自己喜歡的名稱即可徽诲。
將上面拷貝的~/.ssh/id_rsa.xxx.pub
文件內(nèi)容粘帖到 key 一欄刹帕,在點(diǎn)擊 “add key” 按鈕就可以了。
添加過程 github 會(huì)提示你輸入一次你的 github 密碼 谎替,確認(rèn)后即添加完畢偷溺。
Gitlab
直達(dá)地址:https://gitlab.com/profile/keys
- 登錄 Gitlab
- 點(diǎn)擊右上方的頭像,點(diǎn)擊
settings
- 后續(xù)步驟如 Github
Gitee / 碼云
直達(dá)地址:https://gitee.com/profile/sshkeys
- 登錄 Gitee
- 點(diǎn)擊右上方的頭像钱贯,點(diǎn)擊
設(shè)置
- 后續(xù)步驟如 Github
添加過程 碼云 會(huì)提示你輸入一次你的 Gitee 密碼 挫掏,確認(rèn)后即添加完畢。
6.測(cè)試是否連接成功
由于每個(gè)托管商的倉庫都有唯一的后綴秩命,比如 Github 的是 git@github.com:*尉共。
所以可以這樣測(cè)試:
ssh -T git@github.com
而 gitlab 的可以這樣測(cè)試:
ssh -T git@gitlab.corp.xyz.com
如果能看到一些 Welcome 信息,說明就是 OK 的了
- ssh -T git@github.com
- ssh -T git@gitlab.com
- ssh -T git@gitee.com
$ ssh -T git@github.com
Warning: Permanently added the RSA host key for IP address '13.250.177.223' to the list of known hosts.
Hi dragon! You've successfully authenticated, but GitHub does not provide shell access.
$ ssh -T git@gitlab.com
The authenticity of host 'gitlab.com (35.231.145.151)' can't be established.
ECDSA key fingerprint is SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSn.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitlab.com,35.231.145.151' (ECDSA) to the list of known hosts.
Welcome to GitLab, @dragon!
$ ssh -T git@gitee.com
The authenticity of host 'gitee.com (116.211.167.14)' can't be established.
ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrp+KkGYoFgbVr17bmjeyc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitee.com,116.211.167.14' (ECDSA) to the list of known hosts.
Hi 我是x! You've successfully authenticated, but GITEE.COM does not provide shell access.
結(jié)果如果出現(xiàn)這個(gè)就代表成功:
- GitHub -> successfully
- GitLab -> Welcome to GitLab
- Gitee -> successfully
測(cè)試 clone 項(xiàng)目
$ git clone git@gitlab.com:d-d-u/java-xxx.git
Cloning into 'java-basic'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
7.操作過程出現(xiàn)的問題/報(bào)錯(cuò)
tilde_expand_filename: No such user
檢查是否成功的時(shí)候弃锐,報(bào)錯(cuò):tilde_expand_filename: No such user .
$ ssh -T git@github.com
tilde_expand_filename: No such user .
解決方法:
此問題是因?yàn)?code>寫錯(cuò)了文件路徑 或者 大小寫沒寫對(duì)
袄友,刪除重新配置,或者復(fù)制我的改好粘貼進(jìn)去霹菊。