因为需要需要在同一台电脑上使用两个 GitHub 账号,搜索了一番中文资料,仍然是各种坑。最后还在看了老外的一篇文章才搞定(总是这样)。为方便记忆整理一下存档。注意,本文是以 Mac OS X 系统为例。

一、分别为两个 GitHub 账号生成 SSH 密钥

下面以“first”和“second”两个 GitHub 账号作为例子,说明一下实现方法。

因为 GitHub 是通过 SSH 密钥配对的方式验证的,所以需要先给两个 GitHub 账号分别准备一份 SSH 密钥。具体方法如下:

$ cd ~/.ssh
$ ssh-keygen -t rsa -f id_rsa_first -C "[email protected]"
$ ssh-keygen -t rsa -f id_rsa_second -C "[email protected]"

操作完成后,在 ~/.ssh/ 路径下会出现四个文件:

  • id_rsa_first
  • id_rsa_first.pub
  • id_rsa_second
  • id_rsa_second.pub

二、把 SSH 密钥分别添加到两个 GitHub 账户中

使用下列命令获取两个 SSH 密钥的值:

$ cat id_rsa_first.pub
$ cat id_rsa_second.pub

把这两个值分别粘贴到 GitHub 账号中的 SSH keys 中保存。

三、设置配置文件让不同账号访问不同 SSH 密钥

使用下面的命令在 ~/.ssh/ 下新建一个名为 config 的文件并编辑:

$ touch config
$ vim config

填入以下内容:

#First GitHub
Host first
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_first
#Second GitHub
Host second
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_second

然后清空一下本地的 SSH 缓存,添加一下新的 SSH 密钥:

$ ssh-add -D
$ ssh-add id_rsa_first
$ ssh-add id_rsa_second

最后确认一下新密钥已经添加成功:

$ ssh-add -l

最后验证一下两个帐户是否可用:

$ ssh -T first
$ ssh -T second

如果均出现“xxx! You’ve successfully authenticated, but GitHub does not provide bash access.”的提示,说明已经设置成功。

测试使用 Git 推送到不同的 GitHub 账号

首先在 GitHub 上新建一个名为 test-first 的远程库。然后再在本地建一个本地库:

$ cd ~/documnts
$ mkdir test-first
$ cd test-first

在本地库中随便新建一个文件(如一个名为 README.md 的空文件)测试推送:

$ touch README.md
$ git init
$ git add .
$ git commit -m "First Commit"
$ git remote add origin [email protected]:first/test-first.git
$ git push origin master

注意,上面示例中用 [email protected] 替代了 [email protected]。另外一个帐户“second”同样如法炮制。


参考:Managing Multiple Github Accounts