Git 多用戶配置


一、引言
一般來說,安裝好 git 后,我們都會配置一個全局的 config 信息,就像這樣:

git config --global user.name "jitwxs" // 配置全局用戶名,如 Github 上注冊的用戶名
git config --global user.email "jitwxs@foxmail.com" // 配置全局郵箱,如 Github 上配置的郵箱

 

但是你可能會碰到需要在一台電腦上配置多個用戶信息的需求。此時就不能夠用一個全局配置搞定一切了。

比如因為我的個人電腦出了問題,我想要提交我的個人項目時,只能用公司配的電腦去提交。而公司的電腦配置的是私有的 gitlab 倉庫,而我自己的項目存儲在 github 上。這兩個倉庫不僅倉庫地址不一樣,倉庫的用戶名和郵箱都不一樣。

二、配置多用戶
本文將配置分別是 github 以及 gitlab 上的兩個用戶,並分別在它們所屬的項目上進行 git 操作,這差不多就是配置多用戶的大部分操作了。

GITHUB GITLAB
用戶名 jitwxs lemon
郵箱 jitwxs@foxmail.com lemon@test.com
2.1 清除全局配置
在正式配置之前,我們先得把全局配置給清除掉(如果你配置過的話),執行命令:

git config --global --list
這會列出所有已經配置的全局配置,如果你發現其中有 user.name 和 user.email 信息,請執行以下命令將其清除掉:

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

2.2 生成鑰對
鑰對的保存位置默認在 ~/.ssh 目錄下,我們先清理下這個目錄中已存在的鑰對信息,即刪除其中的 id_rsa、id_rsa.pub 之類的公鑰和密鑰文件。

首先我們開始生成 github 上的倉庫鑰對,通過 -C 參數填寫 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 配置區分,這里輸入 id_rsa_github。輸入完畢后,一路回車,鑰對就生成完畢了。

下面開始生成 gitlab 上的倉庫鑰對,步驟和上面一樣:

ssh-keygen -t rsa -C “lemon@test.com”

生成的公鑰名就叫做:id_rsa_gitlab。

2.3 添加 SSH Keys
我相信你既然都看到這篇文章了,你一定掌握了如何將公鑰添加到 SSH Keys 中。請將 id_rsa_github.pub 和 id_rsa_gitlab.pub 內容分別添加到 github 和 gitlab 的 SSH Keys 中,這里就不啰嗦了。

2.4 添加私鑰
在上一步中,我們已經將公鑰添加到了 github 或者 gitlab 服務器上,我們還需要將私鑰添加到本地中,不然無法使用。添加命令也十分簡單,如下:

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

添加完畢后,可以通過執行 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 服務器和本地了。下面我們需要在本地創建一個密鑰配置文件,通過該文件,實現根據倉庫的 remote 鏈接地址自動選擇合適的私鑰。

編輯 ~/.ssh 目錄下的 config 文件,如果沒有,請創建。

vim ~/.ssh/config

配置內容如下:

Host github
HostName github.com
User jitwxs
IdentityFile ~/.ssh/id_rsa_github

Host gitlab
HostName gitlab.mygitlab.com
User lemon
IdentityFile ~/.ssh/id_rsa_gitlab

 

該文件分為多個用戶配置,每個用戶配置包含以下幾個配置項:

Host:倉庫網站的別名,隨意取
HostName:倉庫網站的域名(PS:IP 地址應該也可以)
User:倉庫網站上的用戶名
IdentityFile:私鑰的絕對路徑
注: Host 就是可以替代 HostName 來使用的別名,比如我 github 上某個倉庫的 clone 地址為:

git@github.com:jitwxs/express.git

那么使用 Host 后就是:

git@github:jitwxs/express.git

咳咳,反正我覺得沒啥用,畢竟 remote 地址都是直接復制下來的,沒人會手敲吧?

可以用 ssh -T 命令檢測下配置的 Host 是否是連通的:

~/.sshssh -T git@github
Hi jitwxs! You've successfully authenticated, but GitHub does not provide shell access.
~/.sshssh -T git@gitlab
Welcome to GitLab, @lemon!

 

當然不用 Host 用 HostName 也是一樣的:

~/.sshssh -T git@github.com
Hi jitwxs! You've successfully authenticated, but GitHub does not provide shell access.
~/.sshssh -T git@gitlab.mygitlab.com
Welcome to GitLab, @lemon!

 

2.6 倉庫配置
恭喜你!完成以上配置后,其實你已經基本完成了所有配置。分別進入附屬於 github 和 gitlab 的倉庫,此時都可以進行 git 操作了。但是別急,如果你此時提交倉庫修改后,你會發現提交的用戶名變成了你的系統主機名。

這是因為 git 的配置分為三級別,System —> Global —>Local。System 即系統級別,Global 為配置的全局,Local 為倉庫級別,優先級是 Local > Global > System。

因為我們並沒有給倉庫配置用戶名,又在一開始清除了全局的用戶名,因此此時你提交的話,就會使用 System 級別的用戶名,也就是你的系統主機名了。

因此我們需要為每個倉庫單獨配置用戶名信息,假設我們要配置 github 的某個倉庫,進入該倉庫后,執行:

git config --local user.name "jitwxs"
git config --local user.email "jitwxs@foxmail.com"

 

執行完畢后,通過以下命令查看本倉庫的所有配置信息:

git config --local --list

至此你已經配置好了 Local 級別的配置了,此時提交該倉庫的代碼,提交用戶名就是你設置的 Local 級別的用戶名了。
————————————————
版權聲明:本文為CSDN博主「Jitwxs」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/yuanlaijike/article/details/95650625

喜歡這篇文章?歡迎打賞~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM