一隘梨、引言
一般來說尤辱,安裝好 git 后锐锣,我們都會配置一個全局的 config 信息蛮寂,就像這樣:
git config --global user.name "jitwxs" // 配置全局用戶名,如 Github 上注冊的用戶名
git config --global user.email "jitwxs@foxmail.com" // 配置全局郵箱驮吱,如 Github 上配置的郵箱
但是你可能會碰到需要在一臺電腦上配置多個用戶信息的需求茧妒。此時就不能夠用一個全局配置搞定一切了。
比如因為我的個人電腦出了問題左冬,我想要提交我的個人項目時嘶伟,只能用公司配的電腦去提交。而公司的電腦配置的是私有的 gitlab 倉庫,而我自己的項目存儲在 github 上惠豺。這兩個倉庫不僅倉庫地址不一樣莹弊,倉庫的用戶名和郵箱都不一樣。
二铸鹰、配置多用戶
本文將配置分別是 github 以及 gitlab 上的兩個用戶,并分別在它們所屬的項目上進行 git 操作皂岔,這差不多就是配置多用戶的大部分操作了蹋笼。
2.1 清除全局配置
在正式配置之前,我們先得把全局配置給清除掉(如果你配置過的話)躁垛,執(zhí)行命令:
git config --global --list
這會列出所有已經(jīng)配置的全局配置剖毯,如果你發(fā)現(xiàn)其中有 user.name 和 user.email 信息,請執(zhí)行以下命令將其清除掉:
git config --global --unset user.name
git config --global --unset user.email
2.2 生成鑰對
鑰對的保存位置默認在 ~/.ssh 目錄下教馆,我們先清理下這個目錄中已存在的鑰對信息逊谋,即刪除其中的 id_rsa、id_rsa.pub 之類的公鑰和密鑰文件土铺。
首先我們開始生成 github 上的倉庫鑰對胶滋,通過 -C 參數(shù)填寫 github 的郵箱:
ssh-keygen -t rsa -C “jitwxs@foxmail.com”
按下 ENTER 鍵后,會有如下提示:
Generatingpublic/privatersa key pair.Enter fileinwhich to save the key (/Users/jitwxs/.ssh/id_rsa):
在這里輸入公鑰的名字悲敷,默認情況是叫 id_rsa究恤,為了和后面的 gitlab 配置區(qū)分,這里輸入 id_rsa_github后德。輸入完畢后部宿,一路回車,鑰對就生成完畢了瓢湃。
下面開始生成 gitlab 上的倉庫鑰對理张,步驟和上面一樣:
ssh-keygen -t rsa -C “l(fā)emon@test.com”
生成的公鑰名就叫做:id_rsa_gitlab。
2.3 添加 SSH Keys
我相信你既然都看到這篇文章了箱季,你一定掌握了如何將公鑰添加到 SSH Keys 中涯穷。請將 id_rsa_github.pub 和 id_rsa_gitlab.pub 內(nèi)容分別添加到 github 和 gitlab 的 SSH Keys 中,這里就不啰嗦了藏雏。
2.4 添加私鑰
在上一步中拷况,我們已經(jīng)將公鑰添加到了 github 或者 gitlab 服務器上作煌,我們還需要將私鑰添加到本地中,不然無法使用赚瘦。添加命令也十分簡單粟誓,如下:
ssh-add ~/.ssh/id_rsa_github // 將 GitHub 私鑰添加到本地
ssh-add ~/.ssh/id_rsa_gitlab // 將 GitLab 私鑰添加到本地
添加完畢后,可以通過執(zhí)行 ssh-add -l 驗證下起意,如果都能顯示出來和下面一樣鹰服,就 OK 了。
ssh-add -l
2048 SHA256:mXVNxWHZsZpKOnHlPslF2jXAWR+jc7M6P5hYbrCo jitwxs@foxmail.com (RSA)
2048 SHA256:Blhp3+Hx5mp9HDivFjDuwc/PaQ8ux45TRa6nTsfIe0PEz4 lemon@test.com (RSA)
2.5 管理密鑰
通過以上步驟揽咕,公鑰悲酷、密鑰分別被添加到 git 服務器和本地了。下面我們需要在本地創(chuàng)建一個密鑰配置文件亲善,通過該文件设易,實現(xiàn)根據(jù)倉庫的 remote 鏈接地址自動選擇合適的私鑰。
編輯 ~/.ssh 目錄下的 config 文件蛹头,如果沒有顿肺,請創(chuàng)建。
vim ~/.ssh/config
配置內(nèi)容如下:
HostName github.com
User jitwxs
IdentityFile ~/.ssh/id_rsa_github
Host gitlab
HostName gitlab.mygitlab.com
User lemon
IdentityFile ~/.ssh/id_rsa_gitlab
該文件分為多個用戶配置渣蜗,每個用戶配置包含以下幾個配置項:
Host:倉庫網(wǎng)站的別名屠尊,隨意取
HostName:倉庫網(wǎng)站的域名(PS:IP 地址應該也可以)
User:倉庫網(wǎng)站上的用戶名
IdentityFile:私鑰的絕對路徑
可以用 ssh -T 命令檢測下配置的 Host 是否是連通的:
ssh -T git@github
Hi jitwxs! You've successfully authenticated, but GitHub does not provide shell access.
ssh -T git@gitlab
Welcome to GitLab, @lemon!
當然不用 Host 用 HostName 也是一樣的:
ssh -T git@github.com
Hi jitwxs! You've successfully authenticated, but GitHub does not provide shell access.
ssh -T git@gitlab.mygitlab.com
Welcome to GitLab, @lemon!
2.6 倉庫配置
恭喜你!完成以上配置后耕拷,其實你已經(jīng)基本完成了所有配置讼昆。分別進入附屬于 github 和 gitlab 的倉庫,此時都可以進行 git 操作了斑胜。但是別急控淡,如果你此時提交倉庫修改后嫌吠,你會發(fā)現(xiàn)提交的用戶名變成了你的系統(tǒng)主機名止潘。
這是因為 git 的配置分為三級別,System —> Global —>Local辫诅。System 即系統(tǒng)級別凭戴,Global 為配置的全局,Local 為倉庫級別炕矮,優(yōu)先級是 Local > Global > System么夫。
因為我們并沒有給倉庫配置用戶名,又在一開始清除了全局的用戶名肤视,因此此時你提交的話档痪,就會使用 System 級別的用戶名,也就是你的系統(tǒng)主機名了邢滑。
因此我們需要為每個倉庫單獨配置用戶名信息腐螟,假設我們要配置 github 的某個倉庫,進入該倉庫后,執(zhí)行:
git config --local user.name "jitwxs"
git config --local user.email "jitwxs@foxmail.com"
執(zhí)行完畢后乐纸,通過以下命令查看本倉庫的所有配置信息:
git config --local --list
至此你已經(jīng)配置好了 Local 級別的配置了衬廷,此時提交該倉庫的代碼,提交用戶名就是你設置的 Local 級別的用戶名了汽绢。
————————————————
原文鏈接:https://blog.csdn.net/yuanlaijike/article/details/95650625