Mac下配置多個Git賬戶

嘮叨幾句

對于大多數(shù)程序員,喜歡將代碼托管到github、gitlab、gitee上。為了避免每次push、pull代碼時都要輸入用戶名和密碼,通常會選擇使用ssh協(xié)議,將公鑰保存到托管網站上。
在實際開發(fā)中,通常要將代碼托管到多個平臺上。如:我們公司的代碼需要托管到gitee上,自己的開源代碼托管到GitHub上等,每個托管平臺都對應一個git賬戶。一般情況下,一臺電腦的Git只對應一個賬戶,只能往一個網站push代碼,很不方便。小主近期與朋友寫開源代碼時,就遇到這種情況,為了在本地使用兩個Git賬號,push、pull代碼,費了老大勁才搞好,這篇文章就介紹如何在一個Git終端中配置多個賬戶,同時管理多個托管網站的代碼。

準備工作

首先,設置Git的全局配置。首次次安裝Git時,往往會使用如下的命令配置全局用戶名和郵箱:

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

--global選項代表全局,是配置的全局user.nameuser.email。不同的Git倉庫默認的用戶名和郵箱都是這個值。由于需要管理多個賬戶,所以僅使用這個全局值是不夠的,需要在每個倉庫中單獨配置
如果已配置過,先重置

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

查看賬戶配置

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

配置步驟

1. 對每個賬戶生成一對密鑰

首先進入保存秘鑰的目錄,該目錄下保存秘鑰,需要提醒的是這個目錄是默認隱藏的,可以打開Finder,同事按下command + shift + .即可顯示全部隱藏文件

cd ~/.ssh //查看秘鑰目錄

然后,根據賬戶郵箱生成秘鑰。如我在gitee上的郵箱是Balopy@163.com,則命令為:

ssh-keygen -t rsa -C "Balopy@163.com"

生成秘鑰后,會提示:

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

可以使用

cat ~/.ssh/id_rsa.pub  #查看公鑰,  id_rsa  沒有pub 后綴的是秘鑰,也叫私鑰

查看公鑰

注意:
1. (/Users/liugui/.ssh/id_rsa): 冒號后面是讓輸入秘鑰名的;
2. 秘鑰默認的文件名是id_rsa。為方便區(qū)分,可以自定義名字為id_rsa_Balopy
3. 接下來的提示都直接進行回車,直到秘鑰生成。
4. 通過ls命令,可以看到剛剛生成的密鑰id_rsa_Balopy公鑰id_rsa_Balopy.pub
同理,對其他賬戶,使用同樣的方法。

2. 私鑰添加到本地

SSH協(xié)議的原理,就是在托管網站上使用公鑰,在本地使用私鑰,這樣本地倉庫就可以和遠程倉庫進行通信。在上一步已經生成了秘鑰文件,接下來需要使用秘鑰文件,首先是在本地使用秘鑰文件:

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

為了檢驗本地是否添加成功,可以使用ssh-add -l命令進行查看

3. 對本地秘鑰進行配置

由于添加了多個密鑰文件,所以需要對這多個密鑰進行管理。在.ssh目錄下新建一個config文件:

touch config

文件中的內容如下:

#網站的別名,隨意取
Host Balopy
# 托管網站的域名
HostName gitee.com 
#指定優(yōu)先使用哪種方式驗證,支持密碼和秘鑰驗證方式
PreferredAuthentications publickey 
# 托管網站上的用戶名,最好寫賬戶郵箱,否則容易設置失敗
User lueng@163.com
# 使用的密鑰文件
IdentityFile ~/.ssh/id_rsa_Balopy_gitee

# GitLab的配置相同
Host wang
HostName gitee.com
PreferredAuthentications publickey
User wang@268xue.com
IdentityFile ~/.ssh/id_rsa

如果報以下錯誤,需要檢查一下,用戶名是否是郵箱,或域名是否按要求設置

配置錯誤的情況

注意:
Host 是別名,替代的是 gitee.com, 在push/pull代碼是,
切記格式:

git@gitee.com:balopy/Demo_Swift_2.0.git  // 原倉庫地址
git@Balopy:Balopy/Demo_Swift_2.0.git     // 使用時用別名
git clone Balopy:balopy/Demo_Swift_2.0.git //如clone 時用別名

4. 公鑰添加到托管網站

以GitHub為例,先在本地復制公鑰。進入.ssh目錄,使用vim id_rsa_github.pub查看生成的GitHub公鑰,全選進行復制。

登錄GitHub,點擊右上角頭像選擇設置,在打開的頁面中選擇SSH公鑰

添加公鑰

托管網站的公鑰添加完成。每個托管平臺分別生成一對密鑰,分別添加到本地和托管網站。

這時候,可以測試一下配置是否成功,測試命令使用別名。例如,對于GitHub,本來應該使用的測試命令是:

ssh -T gitee.com // 單賬號使用原域名,
ssh -T Balopy   // 多賬號測試時使用別名
測試配置成功

如何使用

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

1.如果是從遠端拉取代碼

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

git clone git@gitee.com:Balopy/test.git

由于使用了別名gitlab,所以實際使用的復制命令應當為:

git clone Balopy:Balopy/test.git

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

2. 如果是本地已有的倉庫

如果本地已有倉庫,需要與遠端進行關聯(lián),進入本地倉庫文件夾,單獨配置該倉庫的用戶名和郵箱

git config user.name "Balopy"
git config user.email "Balopy@163.com"

然后,進入本地倉庫的git目錄,打開config文件

cd .git   // 如果是新建文件夾需要先執(zhí)行git init
vim config  //新建config 文件

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

[remote "origin"]
        url = git@Balopy:Balopy/test.git  //域名使用別名,原git@gitee.com
        fetch = +refs/heads/*:refs/remotes/origin/*

如果使用原域名會報錯,因為config 設置了別名

使用原域名會報錯

使用別名clone
使用別名成功

總結一下吧,多賬號使用倉庫,關鍵是要配置好用戶名和郵箱,及使用別名。使用別名的目的是為了通過別名,將本地倉庫與密鑰目錄.ssh文件夾下的密鑰進行管理,這樣本地倉庫使用的私鑰與托管網站使用的公鑰的配對,而用戶名和郵箱是該倉庫使用SSH協(xié)議時需要用到的信息。
參考博文:https://juejin.im/post/5d1ebab8f265da1bd2610b6b
完事兒,些處應有掌聲_

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評論 6 546
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,814評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,980評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,779評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,109評論 1 330
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,287評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 49,799評論 1 338
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,515評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,750評論 1 375
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,933評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,492評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,703評論 2 380