拥有多个Git账户,如何针对不同的项目配置不同的账户,是许多人都会遇到的问题。

本篇文章介绍如何在同一台电脑上针对不同的托管网站配置使用不同的账户。

删除Git全局配置

在安装git后,许多人都会配置全局账户,但若拥有多个账户,在不同的仓库下操作比较麻烦。因此,需要取消全局设置。

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

值得注意的是,因取消了全局账户,以后在新建仓库时,都需要在仓库下设置仓库用户名和邮箱。

cd 根目录
cd .git
git config user.name "user2"  
git config user.email "user2@163.com"

个人实测,也可以不取消全局配置。可将使用次数较多的账户作为全局账户。在使用较少使用的账户时,再设置仓库用户名和邮箱。

SSH配置

注:以下操作请在git bash中进行

生成key

首先进入用户主目录下的.ssh目录

cd ~/.ssh

然后生成ssh密钥,要将两个账户都执行一遍,两账户在输入名称时,需设置不同的名称,可以考虑加上后缀,便于区分。操作如下:

#新建ssh key
ssh-keygen -t rsa -C "your email"
#将文件重命名,如id_rsa_github 
Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa): id_rsa_github

ssh-keygen -t rsa -C "your email"
#将文件重命名,如id_rsa_gitee
Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa): id_rsa_gitee

注册key

因Git会默认只读取到id_rsa 文件,为了让SSH识别新的私钥,需将其添加到SSH agent中:

ssh-add ~/.ssh/id_rsa_github
ssh-add ~/.ssh/id_rsa_gitee

成功后会提示

Your identification has been saved in /c/Users/you/.ssh/id_rsa.

如果出现

Could not open a connection to your authentication agent.

错误,则执行

eval `ssh-agent -s`

后再重新执行ssh-add命令即可。

添加配置文件

首先进入用户主目录下的.ssh目录

cd ~/.ssh

新建一个config配置文件。 如两账户为不同网站,则文件内容如下:

# 该文件用于配置私钥对应的服务器
# Default github user(first@mail.com)
Host github.com
 HostName github.com
 User git
 IdentityFile ~/.ssh/id_rsa_github

 # second user(second@mail.com)
 # 新建的帐号使用这个别名做克隆和更新
Host gitee.com
 HostName gitee.com
 User git
 IdentityFile ~/.ssh/id_rsa_gitee

添加到托管网站

将相应的公钥添加到如github,gitee等的代码托管网站。

测试是否成功

输入

ssh -T git@github.com

判断是否成功。

结语

配置多个账户,在使用VSCode等文本编辑器与仓库同步时,或者在克隆私有仓库时,会更加方便。

如果使用的是idea等IDE,一般不需要进行配置,IDE可以自动记住多个账户并进行切换,只需在提交时选择相应的用户名。