Mac下配置多個(gè)Git賬戶

一 應(yīng)用場景

我們經(jīng)常將代碼托管到github踱讨、gitlab這樣的網(wǎng)站上稚铣。為了避免每次push代碼時(shí)都要輸入用戶名和密碼瞧剖,通常會選擇使用ssh協(xié)議,將公鑰保存到托管網(wǎng)站上民假。在實(shí)際開發(fā)中浮入,往往要將代碼托管到多個(gè)不同的網(wǎng)站上。比如羊异,公司的代碼需要托管到coding上事秀,自己的開源代碼托管到GitHub上,私有代碼托管到gitlab上等等野舶,每個(gè)托管網(wǎng)站都對應(yīng)一個(gè)git賬戶易迹。默認(rèn)情況下,一臺電腦的Git只對應(yīng)一個(gè)賬戶平道,只能往一個(gè)網(wǎng)站push代碼睹欲,非常不便。這篇博客將介紹如何在一個(gè)Git終端中配置多個(gè)賬戶,同時(shí)管理多個(gè)托管網(wǎng)站的代碼窘疮。

二. 準(zhǔn)備工作

首先袋哼,需要準(zhǔn)備好對Git的全局用戶進(jìn)行配置。在初次安裝Git時(shí)考余,往往會使用如下的命令配置全局用戶名和郵箱:

git config --global user.name "xxx" // 配置全局用戶名先嬉,如Github上注冊的用戶名
git config --global user.email "yyy@mail.com" // 配置全局郵箱,如Github上配置的郵箱

這個(gè)--global選項(xiàng)楚堤,是指這里配置的user.nameuser.email是相對于全局進(jìn)行配置的疫蔓,即不同的Git倉庫默認(rèn)的用戶名和郵箱都是這個(gè)值。由于需要管理多個(gè)賬戶身冬,所以僅僅使用這個(gè)全局值是不夠的衅胀,需要在每個(gè)倉庫中單獨(dú)配置。對此酥筝,有兩種處理方法:

如果之前已經(jīng)使用該命令進(jìn)行配置滚躯,則先使用如下命令清除

git config --global --unset user.name
git config --global --unset user.email

如果不確定是否已經(jīng)配置過,可以使用下面的命令查看

git config --global user.name
git config --global user.email

三: 配置步驟

3. 1. 對每個(gè)賬戶生成一對密鑰

首先進(jìn)入保存秘鑰的目錄:

cd ~/.ssh // 進(jìn)入目錄嘿歌,該目錄下保存生成的秘鑰

然后掸掏,根據(jù)賬戶郵箱生成秘鑰。例如我在GitHub上的郵箱是liugui@hust.edu.cn宙帝,則命令為:

ssh-keygen -t rsa -C "liugui@hust.edu.cn"

輸入完成后丧凤,會有如下提示:

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/liugui/.ssh/id_rsa):

這里要求對秘鑰進(jìn)行命名,默認(rèn)的文件名是id_rsa步脓。為了方便區(qū)分愿待,我這里命名為id_rsa_github。接下來的提示都直接進(jìn)行回車靴患,直到秘鑰生成仍侥。通過ls命令,可以看到剛剛生成的密鑰對id_rsa_githubid_rsa_github.pub鸳君。其中id_rsa_github.pub是公鑰农渊。

同樣,對于GitLab上的賬戶或颊,我是用另一個(gè)郵箱注冊的腿时,按照同樣的步驟生成id_rsa_gitlab的秘鑰對。接下來的步驟饭宾,除額外說明外,兩個(gè)賬戶的操作完全相同格了。

3. 2 私鑰添加到本地

SSH協(xié)議的原理看铆,就是在托管網(wǎng)站上使用公鑰,在本地使用私鑰盛末,這樣本地倉庫就可以和遠(yuǎn)程倉庫進(jìn)行通信弹惦。在上一步已經(jīng)生成了秘鑰文件否淤,接下來需要使用秘鑰文件,首先是在本地使用秘鑰文件:

ssh-add ~/.ssh/id_rsa_github // 將GitHub私鑰添加到本地
ssh-add ~/.ssh/id_rsa_gitlab // 將GitLab私鑰添加到本地

為了檢驗(yàn)本地是否添加成功棠隐,可以使用ssh-add -l命令進(jìn)行查看

3.3: 對本地秘鑰進(jìn)行配置

由于添加了多個(gè)密鑰文件石抡,所以需要對這多個(gè)密鑰進(jìn)行管理。在.ssh目錄下新建一個(gè)config文件:

touch config

文件中的內(nèi)容如下:

Host github // 網(wǎng)站的別名助泽,隨意取
HostName github.com // 托管網(wǎng)站的域名
User liugui // 托管網(wǎng)站上的用戶名
IdentityFile ~/.ssh/id_rsa_github // 使用的密鑰文件

// GitLab的配置相同
Host gitlab
HostName gitlab.com
User liugui
IdentityFile ~/.ssh/id_rsa_gitlab
3.4: 公鑰添加到托管網(wǎng)站

GitHub為例啰扛,先在本地復(fù)制公鑰。進(jìn)入.ssh目錄嗡贺,使用vim id_rsa_github.pub查看生成的GitHub公鑰隐解,全選進(jìn)行復(fù)制。
登錄GitHub诫睬,點(diǎn)擊右上角頭像選擇settings煞茫,在打開的頁面中選擇SSH and GPG keys

https://image-static.segmentfault.com/325/045/3250450123-5b8e880ae25ea_articlex

在打開的頁面的Key輸入框中粘貼剛剛復(fù)制的公鑰摄凡,title的名字自己隨便去续徽,然后點(diǎn)擊下方的Add SSH key按鈕:

https://image-static.segmentfault.com/179/351/1793513036-5b8e88180ee14_articlex

至此,托管網(wǎng)站的公鑰添加完成亲澡∏张ぃ總結(jié)來說,就是針對每個(gè)托管網(wǎng)站分別生成一對密鑰谷扣,然后分別添加到本地和托管網(wǎng)站土全。

這時(shí)候,可以測試一下配置是否成功会涎,測試命令使用別名裹匙。例如,對于GitHub末秃,本來應(yīng)該使用的測試命令是:

ssh -T git@github.com

config文件中概页,給GitHub網(wǎng)站配置的別名就是github,所以直接使用別名练慕,就是

ssh -T git@github

四: 如何使用

使用有兩種情況惰匙,一種情況是從遠(yuǎn)端拉取代碼到本地,一種是本地已有倉庫需要與遠(yuǎn)程倉庫關(guān)聯(lián)铃将。

4.1: 如果是從遠(yuǎn)端拉取代碼

選擇SSH協(xié)議的復(fù)制命令项鬼,如對于GitLab上代碼庫test,其復(fù)制命令為

git clone git@gitlab.com:liugui/test.git

由于使用了別名gitlab劲阎,所以實(shí)際使用的復(fù)制命令應(yīng)當(dāng)為:

git clone git@gitlab:liugui/test.git

這種方法較為簡單绘盟,修改后的代碼無需額外配置,可以直接push

4.2: 如果是本地已有的倉庫

這種情況適用于本地新建的倉庫需要與遠(yuǎn)端進(jìn)行關(guān)聯(lián),或者之前已經(jīng)使用sourceTree等圖形界面軟件拷貝的倉庫龄毡。進(jìn)入本地倉庫文件夾吠卷,需要單獨(dú)配置該倉庫的用戶名和郵箱

git config user.name "liugui"
git config user.email "liugui@hust.edu.cn"

然后,進(jìn)入本地倉庫的git目錄沦零,打開config文件

cd .git // 該目錄是隱藏的祭隔,ls命令不可見,但是可以直接進(jìn)入路操,如果是新建的文件夾需要先執(zhí)行g(shù)it init
vim config

在config文件中疾渴,修改(config文件中已有remote "origin"信息)或者添加(config文件中不包含remote "origin"信息)分支信息:

[remote "origin"]
        url = git@gitlab:GuiLiu/test.git
        fetch = +refs/heads/*:refs/remotes/origin/*

主要是URL部分,原生的信息一般是git@gitlab.com:GuiLiu/test.git寻拂,需要將gitlab.com使用別名gitlab代替程奠。

可以看到,倉庫中的關(guān)鍵是要配置好用戶名和郵箱祭钉,以及使用別名瞄沙。使用別名的目的是為了通過別名,將本地倉庫與密鑰目錄.ssh文件夾下的密鑰進(jìn)行管理慌核,這樣就完成了本地倉庫使用的私鑰與托管網(wǎng)站使用的公鑰的配對距境,而用戶名和郵箱是該倉庫使用SSH協(xié)議時(shí)需要用到的信息

4.3 補(bǔ)充一下Coding

在關(guān)聯(lián)coding上托管的代碼時(shí),遇到了一點(diǎn)麻煩垮卓,主要是因?yàn)閯e名的修改不正確垫桂,以及20端口禁用的問題導(dǎo)致的,所以單獨(dú)記錄下粟按,.ssh目錄下的config文件中的密鑰信息應(yīng)該為:

Host coding
HostName git-ssh.coding.net // 這個(gè)域名使用coding官網(wǎng)獲取的诬滩,不能寫coding.net
User liugui
IdentityFile ~/.ssh/id_rsa_coding
Port 443 // 20端口可能被禁用,需要使用443端口

轉(zhuǎn)載:https://segmentfault.com/a/1190000016269686

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末灭将,一起剝皮案震驚了整個(gè)濱河市疼鸟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌庙曙,老刑警劉巖空镜,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異捌朴,居然都是意外死亡吴攒,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門砂蔽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來洼怔,“玉大人,你說我怎么就攤上這事左驾≤罾鳎” “怎么了泽台?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長矾缓。 經(jīng)常有香客問我,道長稻爬,這世上最難降的妖魔是什么嗜闻? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮桅锄,結(jié)果婚禮上琉雳,老公的妹妹穿的比我還像新娘。我一直安慰自己友瘤,他們只是感情好翠肘,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著辫秧,像睡著了一般束倍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盟戏,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天绪妹,我揣著相機(jī)與錄音,去河邊找鬼柿究。 笑死邮旷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蝇摸。 我是一名探鬼主播婶肩,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼貌夕!你這毒婦竟也來了律歼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤蜂嗽,失蹤者是張志新(化名)和其女友劉穎苗膝,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體植旧,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辱揭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了病附。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片问窃。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖完沪,靈堂內(nèi)的尸體忽然破棺而出域庇,到底是詐尸還是另有隱情嵌戈,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布听皿,位于F島的核電站熟呛,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏尉姨。R本人自食惡果不足惜庵朝,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望又厉。 院中可真熱鬧九府,春花似錦、人聲如沸覆致。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽煌妈。三九已至儡羔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間声旺,已是汗流浹背笔链。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留腮猖,地道東北人鉴扫。 一個(gè)月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像澈缺,于是被迫代替她去往敵國和親坪创。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345

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