同一臺電腦上管理多個git賬戶

http://www.reibang.com/p/3fc93c16ad2d
創(chuàng)建日期:2020年4月6日
系統(tǒng)版本:macOS Mojave(V10.14.6)

本篇,Windows系統(tǒng)的電腦也通用粉私,僅有一個linux的命令彼水,需要自己調查。

1.創(chuàng)建SSH密鑰

1.1 查看本機是否存在SSH keys,

$ ls ~/.ssh/

沒有募舟,則繼續(xù)下一步袒啼;如果存在宛畦,則跳到【3.在GitHub賬戶中添加你的公鑰】。

1.2 創(chuàng)建一對新的SSH密鑰(keys)

$ssh-keygen -t rsa -C "your_email@example.com"

運行后虑鼎,將按照你提供的郵箱辱匿,創(chuàng)建一對密鑰,控制臺出現(xiàn)的信息:

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

直接回車炫彩,則將密鑰按默認文件進行存儲匾七。此時也可以輸入特定的文件名,比如/c/Users/you/.ssh/github_rsa江兢。直接回車后昨忆,會要求你輸入密碼:

Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

接著,根據提示杉允,你需要輸入密碼和確認密碼(說到這里邑贴,如果你很放心,其實可以不用密碼叔磷,就是到輸密碼的地方拢驾,都直接回車,所以每次push就只管回車就行了改基。所謂的最安全的密碼繁疤,就是沒有密碼 – – 哈哈)。密碼設置完后秕狰,回車稠腊,會出現(xiàn)如下信息:(該圖是從設置密鑰開始的截圖)



版本不同,可能出現(xiàn)的答案也不同鸣哀,總之架忌,沒有出現(xiàn)錯誤提示,應該就是成功了我衬。

1.3 在GitHub賬戶中添加你的公鑰

運行如下命令叹放,將公鑰的內容復制到系統(tǒng)粘貼板(clipboard)中饰恕。

$ pbcopy < ~/.ssh/id_rsa.pub
#上面命令是Mac下的命令,windows方法相同许昨,但是此命令不同

接著:

(1) 登陸GitHub,進入你的Account Settings.
點擊你的頭像懂盐,選擇Settings,進入設置界面

(2) 在左邊菜單糕档,點擊”SSH and GPG keys”。
(3) 點擊”New SSH key”按鈕.

(4) 粘貼你的密鑰到key輸入框中,點擊"Add SSH key"按鈕


(5) 再彈出窗口拌喉,輸入你的GitHub密碼速那,點擊確認按鈕。

(6) 到此尿背,大功告成了端仰!

1.4 測試

為了確認我們可以通過SSH連接GitHub,我們輸入下面命令田藐。輸入后荔烧,會要求我們提供驗證密碼,輸入之前創(chuàng)建的密碼就ok了汽久。

$ ssh -T git@github.com

你可能會看到告警信息鹤竭,如下:

1.The authenticity of host 'github.com (207.97.227.239)' can't be established.
2.RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
3.Are you sure you want to continue connecting (yes/no)?

不用擔心,直接輸入yes景醇。

如果看到下面信息臀稚,就說明一切完美!

Hi username! You’ve successfully authenticated, but GitHub does not provide shell access.

注意
如果前面沒有將生成的密鑰存放在默認的文件id_rsa中(而是my_rsa中),那么ssh -T git@github.com命令就需要添加參數來執(zhí)行三痰。如下:

$ ssh -T -i my_rsa git@github.com

以上參考使用SSH密鑰連接Github吧寺。

2、單機如何控制不同的SSH Keys連不同的Git環(huán)境?

其實散劫,一套SSH密鑰是可以用在不同的SSH環(huán)境的.

但是如果由于某種要求稚机,需要用不同的SSH密鑰連接不同的Git環(huán)境。假設具體場景是获搏,已經建了密鑰github_rsa赖条,還需要創(chuàng)建work_rsa連接工作環(huán)境git倉庫,那么颜凯,可以按下面操作進行:

2.1 創(chuàng)建第2個密鑰

生成新的公鑰谋币,并命名為 id_rsa_2 (保證與之前密鑰文件名稱不同即可)

$ ssh-keygen -t rsa -f ~/.ssh/id_rsa_2 -C "yourmail@xxx.com"

注意:這個郵箱是你另一個賬戶的郵箱。

2.2 創(chuàng)建config配置文件

.ssh 文件夾下新建 config 文件并編輯症概,

$ cd .ssh
$ vi config

(按i鍵蕾额,進入編輯模式。不了解vi編輯器的可以找到config的路徑彼城,用工具打開該文件诅蝶,可視化編寫)
另不同 Host 實際映射到同一 HostName退个,但密鑰文件不同。Host 前綴可自定義调炬,例子中ieit

# default                                                                       
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
# two                                                                           
Host ieit.github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_2

(按esc语盈,再輸入:wq退出vi編輯器)

2.3 在GitHub賬戶中添加公鑰

將生成的 id_rsa_2.pubid_rsa_2.pub內容copy 到對應的 github中缰泡,參考【1.3 在GitHub賬戶中添加你的公鑰】刀荒。
如果你是從第一步開始跟下來的,那么我們現(xiàn)在只要設置另一個github賬戶的SSH key即可棘钞。
將第二個賬戶的公鑰內容復制到系統(tǒng)粘貼板上:

$ pbcopy < ~/.ssh/id_rsa_2.pub

2.4 測試 ssh 鏈接

ssh -T git@ieit.github.com
ssh -T git@github.com
# Hi IEIT! You've successfully authenticated, but GitHub does not provide shell access.
# 出現(xiàn)上邊這句缠借,表示鏈接成功。

(我第一次ieit用的自定義的大寫字母宜猜,報錯了泼返,后來我把整個config文件copy過去,ieit用小寫的自定義信息代替姨拥,成功了绅喉。因為在設置第二個賬戶的時候,我加了密碼叫乌,因此會要求你輸入密碼柴罐。)

3、實際操作:建立本地倉庫综芥,關聯(lián)遠程倉庫

(1) 將項目 clone 到本地丽蝎, folder-name 是本地文件夾路徑

git clone git@github.com:whatever folder-name

(2) 取消全局 用戶名/郵箱設置,并進入項目文件夾單獨設置

# 取消全局 用戶名/郵箱 配置
git config --global --unset user.name
git config --global --unset user.email
# 單獨設置每個repo 用戶名/郵箱
git config user.email “xxxx@xx.com”
git config user.name “xxxx”

(3) 命令行進入項目目錄膀藐,重建 origin
對克隆下來的文件屠阻,進行修改,如果可以push额各,則可以忽略此步驟国觉。

git remote rm origin
git remote add origin git@ieit.github.com:whatever

注意

  • whatever 為相應項目地址,并且要是SSH項的地址,而非HTTPS的虾啦。如果誤用了HTTPS的地址麻诀,可能會提示如下錯誤:

fatal: 不支持 'git@ieit.github.com:https' 協(xié)議

  • 在粘貼whatever項時,一定要看好路徑傲醉,github上蝇闭,是帶有git@github.com:這一項的,我們要用config文件里對應的含前綴的那個硬毕,whatever就是這一項后面那部分呻引。如果不小心,把這部分整體作為whatever使用的話吐咳,會提示如下錯誤:

Enter passphrase for key '/Users/username/.ssh/id_rsa_2':
fatal: 遠程錯誤:
is not a valid repository name
Email support@github.com for help

(4) 成功逻悠,可以 push 測試一下

git push origin master

之后元践,你可以按照上面方法,或者你熟悉的方法去設定其他賬戶關聯(lián)的本地倉庫童谒。這里单旁,主要注意的就是,取消全局git賬戶饥伊,然后在每個倉庫中象浑,配置自己對應倉庫的user.email和user.name。


\color{deeppink}{這里是分割線撵渡,下面是筆者走過的坑融柬,可以忽略...}


第二個賬戶的測試
上面的8,9趋距,我都沒有運行。原本第一個賬戶的代碼越除,刪除全局用戶名/郵箱节腐,改成單個項目里設置,沒有push代碼摘盆,但是pull代碼翼雀,沒有問題。
我從github上用git clone拉取公司項目的時候孩擂,只在第一次要求我輸入賬戶和密碼狼渊。之后都是好用的。我用同樣的方法类垦,拉取私人賬戶創(chuàng)建的倉庫是狈邑,push的時候,一直提示權限問題蚤认。在設置ssh的時候米苹,私人賬戶設置了密碼,但是砰琢,應該與這個無關蘸嘶。于是,按照github上以及8陪汽,9的命令训唱,又來了一次:
(1)在本地新建文件夾,進入該文件夾挚冤,運行下面的命令:

$ git init
# 往該文件夾里况增,拖入一個文件,我是用vi新建了一個README.md文件
$ git add .
$ git commit -am "first commit"

到此你辣,有下面提示:

因為我們用兩個賬戶巡通,肯定不能設置全局的尘执,先用命令看看當前的賬戶是什么

$ git config user.email

運行后,什么都不顯示宴凉,說明我們并沒有設置誊锭,現(xiàn)在開始設置郵箱和用戶名:

$ git config user.name "Your Name"
$ git config user.email you@example.com
$ git remote add origin git@ieit.github.com:whatever
#記得把ieit換成你在config中設置的那個值

然后push,之后又出現(xiàn)了error:

fatal: 不支持 'git@ieit.github.com:https' 協(xié)議

調查后弥锄,說粘貼github的倉庫地址時丧靡,用SSL的,不要用HTTPS的籽暇。重新運行之前的命令温治,會提示“git@github.com:ieit/aaaaaa.git”
于是,我們將上面的步驟再進行一次戒悠。待到push的時候熬荆,又出錯了:

Enter passphrase for key '/Users/username/.ssh/id_rsa_2':
fatal: 遠程錯誤:
is not a valid repository name
Email support@github.com for help

這個是命令錯了。仔細觀察绸狐,從一開始卤恳,使用SSH的url的時候,就一直用錯了寒矿,要粘貼git@github.com:后面的那段突琳,因為前面這段我們已經變成config文件中自定義的git@ieit.github.com:,因為沒仔細看,折騰了好久符相。至此拆融,終于成功了。

至此啊终,我們直接clone的镜豹,應該也是可以,只是中途我填錯了url而已孕索。

另外逛艰,作者出現(xiàn)了gitignore沒有該文件,確無法push的問題搞旭。最后解決的方案是把那個文件夾拖出散怖,然后push到遠程,再重新創(chuàng)建同名文件夾肄渗,將拖出的文件件的內容copy到新建立的文件夾镇眷,然后重新push。成功翎嫡!

[參考](http://www.reibang.com/p/3fc93c16ad2d)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末欠动,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌具伍,老刑警劉巖翅雏,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異人芽,居然都是意外死亡望几,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門萤厅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來橄抹,“玉大人,你說我怎么就攤上這事惕味÷ナ模” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵名挥,是天一觀的道長疟羹。 經常有香客問我,道長禀倔,這世上最難降的妖魔是什么阁猜? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮蹋艺,結果婚禮上,老公的妹妹穿的比我還像新娘黄刚。我一直安慰自己捎谨,他們只是感情好,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布憔维。 她就那樣靜靜地躺著涛救,像睡著了一般。 火紅的嫁衣襯著肌膚如雪业扒。 梳的紋絲不亂的頭發(fā)上检吆,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機與錄音程储,去河邊找鬼蹭沛。 笑死,一個胖子當著我的面吹牛章鲤,可吹牛的內容都是我干的摊灭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼败徊,長吁一口氣:“原來是場噩夢啊……” “哼帚呼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤煤杀,失蹤者是張志新(化名)和其女友劉穎眷蜈,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體沈自,經...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡酌儒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了酥泛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片今豆。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖柔袁,靈堂內的尸體忽然破棺而出呆躲,到底是詐尸還是另有隱情,我是刑警寧澤捶索,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布插掂,位于F島的核電站,受9級特大地震影響腥例,放射性物質發(fā)生泄漏辅甥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一燎竖、第九天 我趴在偏房一處隱蔽的房頂上張望璃弄。 院中可真熱鬧,春花似錦构回、人聲如沸夏块。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽脐供。三九已至,卻和暖如春借跪,著一層夾襖步出監(jiān)牢的瞬間政己,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工掏愁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留歇由,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓托猩,卻偏偏與公主長得像印蓖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子京腥,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內容