天天看點

Git 的這個神技,學會爽歪歪~

Git 的這個神技,學會爽歪歪~

現在大多數公司都有 GIT 來管理代碼版本控制了,既然用到 GIT,相信大家都接觸過 Github、Gitlab、Gitee 這些遠端倉庫,或者是公司内部自行搭建的 GIT 倉庫。

當用到 SSH 方式來連接配接 GIT 倉庫的時候,難免會同時用到多個倉庫,一般生成公私鑰的預設配置檔案為:

私鑰:C:\Users\xxx.ssh\id_rsa

公鑰:C:\Users\xxx.ssh\id_rsa.pub

那麼問題來了,我先生成 Github 的,再生成 GitLab 的,那麼後面配置的 Gitlab 的公私鑰檔案會覆寫前面配置 Github 的,進而導緻 Github 倉庫無法連接配接。。

這樣的配置隻能同時連接配接一種類型的倉庫,如何在同一台電腦做到同時連接配接多個不同的倉庫呢?

一、生成多個倉庫公私鑰

1、生成 Github 的:

ssh-keygen -t rsa -b 4096 -C "[email protected]" -f ~/.ssh/github_id_rsa

2、生成 Gitlab 的:

ssh-keygen -t rsa -b 4096 -C "[email protected]" -f ~/.ssh/gitlab_id_rsa

後面有多個倉庫都依此類推,用 -f 來指定不同的檔案名稱:xxx_id_rsa,進而區分不同的倉庫類型,而不用擔心被後面預設生成的覆寫。

二、将公鑰添加到倉庫裡面

複制 xxx_id_rsa.pub 公鑰檔案裡面的内容到對應倉庫裡面,以下 Github 示例:

Git 的這個神技,學會爽歪歪~

三、添加 config 配置

在 ~/.ssh 目錄下建立 config 檔案,添加以下内容:

# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa
 
# gitlab
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_id_rsa
 
# 多個依此類推
# ...      

四、測試連通性

分别測試多個倉庫的連通性,驗證配置是否生效。

1、測試Github:

$ ssh -T [email protected]

2、測試Gitlab:

$ ssh -T [email protected]

以下是 Github 連通示例:

$ ssh -T [email protected]
Enter passphrase for key '/c/Users/xxx/.ssh/github_id_rsa':
Hi javastacks! You've successfully authenticated, but GitHub does not provide shell access.      

這樣配置完,我們就能愉快的使用各種不同的倉庫了~