配置同時(shí)使用 Gitlab、Github芳来、Gitee(碼云) 共存的開發(fā)環(huán)境

首先確認(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.nameuser.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

Github 添加SSH公鑰

直達(dá)地址:https://github.com/settings/keys

過程如下:

  1. 登錄 Github
  2. 點(diǎn)擊右上方的頭像谁不,點(diǎn)擊 settings
  3. 選擇 SSH key
  4. 點(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

Gitlab 添加SSH公鑰

直達(dá)地址:https://gitlab.com/profile/keys

  1. 登錄 Gitlab
  2. 點(diǎn)擊右上方的頭像,點(diǎn)擊 settings
  3. 后續(xù)步驟如 Github

Gitee / 碼云

碼云 添加SSH公鑰

直達(dá)地址:https://gitee.com/profile/sshkeys

  1. 登錄 Gitee
  2. 點(diǎn)擊右上方的頭像钱贯,點(diǎn)擊 設(shè)置
  3. 后續(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

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)去霹菊。

8. 參考鏈接

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末剧蚣,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子旋廷,更是在濱河造成了極大的恐慌鸠按,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饶碘,死亡現(xiàn)場(chǎng)離奇詭異目尖,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門丧靡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來兽肤,“玉大人,你說我怎么就攤上這事测蹲。” “怎么了鬼吵?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵扣甲,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng)琉挖,這世上最難降的妖魔是什么启泣? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮示辈,結(jié)果婚禮上寥茫,老公的妹妹穿的比我還像新娘。我一直安慰自己矾麻,他們只是感情好纱耻,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著险耀,像睡著了一般弄喘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上甩牺,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天蘑志,我揣著相機(jī)與錄音,去河邊找鬼贬派。 笑死急但,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的搞乏。 我是一名探鬼主播波桩,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼查描!你這毒婦竟也來了突委?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤冬三,失蹤者是張志新(化名)和其女友劉穎匀油,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體勾笆,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡敌蚜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了窝爪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弛车。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蒲每,靈堂內(nèi)的尸體忽然破棺而出纷跛,到底是詐尸還是另有隱情,我是刑警寧澤邀杏,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布贫奠,位于F島的核電站唬血,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏唤崭。R本人自食惡果不足惜拷恨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谢肾。 院中可真熱鬧腕侄,春花似錦、人聲如沸芦疏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽眯分。三九已至拌汇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間弊决,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工魁淳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留飘诗,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓界逛,卻偏偏與公主長(zhǎng)得像昆稿,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子息拜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容