出于很多种原因,我们可能需要同时使用两个或多个 Github 的账号,但是由于 Git 配置的全局性,导致我们在一台设备上切换或使用不同的 Github 账号会有一些麻烦的问题。我们今天来看一下如何配置两个 Github 账户。

SSH和Github Desktop方案

第一种方案是:采用 SSH 连接Github Desktop HTTPS 连接 ,来区分和分别使用各个 Github 账户。我们把 Gtihub Desktop 登陆的账户称为主账户,把用 SSH 的账户称为副账户。

1.Github Desktop 主账户

Github Desktop 默认采用 HTTPS 的方式连接,你只需要下载安装 Github Desktop 并登陆你的 Github 账号即可。值得注意的是,由于 Github Desktop 并不支持多账户,它还是默认使用你的 Git 的全局设置信息。

使用以下 Git 命令查看当前的全局配置:

git config --global -l

主要是看 user.nameuser.email 信息:

user.name = your_one
user.email = your_one@mail.com

这里面的信息,就是全局的用户信息,它与你 Github Desktop 所登录的账户是一致的,我们不能去修改它。因为你一旦修改了,Github Desktop 中 commit 的账户就会发生变化。

2.SSH 副账户

由于我们的 Github Desktop 采用了 HTTPS 的方式连接,所以我们在 C:\Users\yourname\.ssh\ 目录下,应该没有任何SSH Key 和配置文件。

我们现在再来给第二个 Github 账户生成。根据 Github 最新文档,我们使用如下命令:

ssh-keygen -t ed25519 -C "your_two@mail.com"

一路回车,我们就能在 C:\Users\yourname\.ssh\ 目录下找到 .pub 文件,这就是我们第二个 Github 账户所需要的 SSH 连接的密钥。

进入 Github 网页,然后在 SSH keys 将 .pub 文件 的内容放到其中并保存。然后我们使用如下命令测试:

ssh -T git@github.com

看看,返回的提示信息,是不是第二个 Github 账户的信息。

最后,我们在使用 SSH 命令控制第二个 Github 账户的时候,一定要注意要在第二个 Github 账户下的每个 Git 项目的根目录中配置一次用户名和邮箱,如果你不配置,它就会使用全局设置,你的全局设置当然就是第一个 Github 账户的信息。

在第二个 Github 账户的每个 Git 项目的根目录中 Git Bash Here,然后输入以下命令:

# 局部配置
git config user.name "your_two"
git config user.email "your_two@mail.com"

# 查看局部配置
git config --list

这样就可以在局部配置用户名和邮箱,只有就可以使用 SSH 命令进行第二个 Github 账户的操作,用 Github Desktop 进行第一个账户的操作,并且互不影响。

git config –list 查看当前配置时,在当前项目下面查看的配置是 “全局配置 + 当前项目” 的配置,使用的时候会优先使用当前项目的配置。所以你会看到全局配置的用户名和邮箱信息在上面,而最后面两行则是你局部配置的用户名和邮箱。

最后你可以尝试 commit 和 push 一下,然后看看 Github 的 contributions 有没有记录。

双SSH方案

第二种方案是:采用双 SSH 连接,分别连接和使用各个 Github 账户。

1.生成2个SSH Key

这种双 SSH 方法就不太适合使用 Github Desktop 或其他 Git GUI 客户端了。因为我们第一步就要把 Git 的全局信息给它取消掉,使用如下命令:

# 取消掉 Git 的全局设置
git config –global –unset user.name
git config –global –unset user.email

接下来我们要生成两个 SSH Key:

# 生成两个 SSH Key
ssh-keygen -t ed25519 -C "your_one@mail.com"
ssh-keygen -t ed25519 -C "your_two@mail.com"

生成 key 的时候,不要一路回车,要给 key 重新分配一个名字,不然两次生成,第二次会把第一次的 key 文件给覆盖掉了。文件存放地址要注意,第一次和第二次存放地址要一致,都要在 C:\Users\yourname\.ssh\ 之下。

2.配置config文件

由于我们更改了 SSH Key 的默认名称,所以我们需要指定一下配置文件。在 C:\Users\yourname\.ssh\ 下新建一个文本文件,命名为 config(不带后缀名)。然后保存一下内容:

# 第一个 Github 账号
	# one可以随意修改,这相当于把 one.github.com 定向到 github.com
    Host one.github.com
  HostName github.com
  PreferredAuthentications publickey
  	# 第一个 Github 账号的 SSH Key 位置
  IdentityFile C:\Users\yourname\.ssh\one.pub
  User one
  
# 第二个 Github 账号
	# two可以随意修改,这相当于把 two.github.com 定向到 github.com
    Host two.github.com
  HostName github.com
  PreferredAuthentications publickey
  	# 第二个 Github 账号的 SSH Key 位置
  IdentityFile C:\Users\yourname\.ssh\two.pub
  User two

然后打开 Github 网页端,分别将 one.pub 和 two.pub 分别存入各个 Github 账号的 SSH keys 中。然后我们可以测试链接,看是否正确:

# 你定义的第一个 Github 账号的重定向地址
ssh –T one.github.com

# 你定义的第二个 Github 账号的重定向地址
ssh –T two.github.com

3.使用

以后我们在使用的时候,应该使用如下命令:

# 原先的命令 git clone git@github.com: name/repo.git

# 现在的命令,使用新定义的 Github 二级域名
git clone git@one.github.com: one/repo.git
# 现在的命令,使用新定义的 Github 二级域名
git clone git@two.github.com: two/repo.git

而且,我们应当给每一个本地项目,都配置一次局部 Git 配置:

# 局部配置
git config user.name "your_one/two"
git config user.email "your_one/two@mail.com"

# 查看局部配置
git config --list

总结

当然还有双 HTTPS 方案,省去了 SSH 配置的麻烦。但是比较来看,还是方案一的 SSH 和 Github Desktop 方案,使用起来更加方便一些吧~

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Next Post

一些常用的开源协议介绍

周二 1月 11 , 2022
世界上的开源许可证大概有上百种,我们在开发的过程中 […]