Git 多賬號 SSH 設定

2023-02-17 06:01:12

【前言】

在企業工作環境中,我們一般會用企業的github或gitlab等賬號,同時也會設定相關的ssh存取方式。

當我們想要同時操作個人github或gitlab倉庫時,就無法重複使用現有的ssh公鑰設定在個人賬號裡。

一種解決辦法是不使用ssh方式,直接使用https方式存取個人倉庫是可行的,但我們今天介紹一種方法可以讓我們在同一臺電腦中設定兩個ssh存取。

【設定SSH】

生成新的RSA金鑰對

我們無法在github站點不同賬戶設定中使用同一個RSA公鑰,將已經新增過的公鑰再次新增到另一個不同賬戶時,會提示金鑰已經被使用過了,這時候我們需要新建立一個金鑰對

開啟cmd輸入命令:ssh-keygen -t rsa -C "隨意註釋字元" -f C:/Users/{username}/.ssh/{keyname}一路回車,生成新的金鑰對

其中兩個引數,username 為個人電腦賬戶名

keyname 自行給新的金鑰對起一個名字,例如我輸入 7tiny,那麼生成出來的金鑰對如下:

將新公鑰新增到將要存取的 github 賬戶

這一步沒啥說的,如果不清楚如何設定,參考歷史文章 --> Git SSH 認證設定 - 7tiny - 部落格園 (cnblogs.com)

新增本地組態檔

在 .ssh 目錄新增組態檔,檔名 config 注意沒有副檔名

檔案內容也非常簡單,按如下設定即可

Host 7tiny
    HostName github.com
    User git
    IdentityFile ~/.ssh/7tiny

檔案說明

Host:標識,隨意取一個即可

HostName:倉庫站點域名,我使用的是 github,因此域名填 github.com

User:預設git即可

IdentityFile:填剛才生成時的金鑰對地址

拉取新賬戶的倉庫原始碼

我們通過ssh方式直接克隆新倉庫的原始碼

克隆時,可以指定採用新的ssh金鑰設定此倉庫,將 [email protected] 替換為前面設定的 Host 名稱(本文用的是7tiny)

例如:git clone 7tiny:dotnet/corefx.git

當然,不這麼指定也是可以成功 clone 的,clone後,開啟本地倉庫目錄下的 .git 資料夾

修改 config 組態檔裡的 url,將 github.com 換為 Host 名稱(本文用的是7tiny),和上述clone時設定效果是一樣的

【說一點題外話】

經過上述設定,git的正常操作都已經ok了,但是還有點小細節問題。

我們提交程式碼採用的賬號和郵箱用的都是 global 設定裡的,這樣在提交程式碼時,個人倉庫裡的提交記錄就會被識別為公司賬號的提交,這樣首頁是不會顯示小綠點的,因為不算「自己」的貢獻

這個處理辦法就是將當前程式碼倉庫的姓名和郵箱換成個人賬號的姓名和郵箱

方法一、通過命令列設定

首先進入當前倉庫地址開啟 git 命令列,通過 git config 命令修改本地姓名郵箱

git config user.name "xxx name"
git config user.email "[email protected]"

方法二、開啟 config 組態檔直接修改

開啟原生程式碼倉庫目錄下的 .git 資料夾下的 config 組態檔

新增 user 節點

[user]
	name = sevenTiny
	email = [email protected]

儲存即可

用任意一種方式設定好後,可以通過git config --local --list 檢視當前倉庫設定

通過 git config --global --list 檢視全域性設定,以確保全域性設定沒有被改錯(local 和 global 不使用同一個姓名郵箱情況下)

後續提交的程式碼將會用此姓名和郵箱操作倉庫,當然,小綠點也是「你」的了