Mac OS下配置多个GitHub账号

以前在学校用的实验室的 iMac,现在大三出来实习了,给自己买了一台 MacBook Pro。之前在 GitHub 上搭建了个人博客,写写知识总结或者生活分享也还是不错的。后来到了公司,用的也是自己的电脑,刚来也不懂 Git,以前在学校也只把 GitHub 当做存放代码的地方,公司用的企业版的 GitHub,给了我一个账号,于是我傻乎乎地照着网上一顿配置,直接设置了全局的 name 和 email,给后来挖了一个坑。

本来没打算折腾的,用简书或者掘金写写博客也还是不错的。可是最近在看一些技术博客,很喜欢 bestswifter 写的文章,不是说有多高深,而是能够把知识说得很通俗易懂,他自己也说“喜欢研究问题的本质,讨厌一切不说人话的描述”。能做到这一点,想必自己对问题已经理解得很透彻了。今天偶然点开霜神的博客 一缕殇流化隐半边冰霜,糟了,是心动的感觉,也太好看了叭。于是下定决心要把博客给迁移过来。

我的博客是在 GitHub 上搭建的,但是现在电脑上只配置了公司的 GitHub 账号。于是第一步,把我以前的 GitHub 账号配置到现在这台电脑上来,而且不能与公司的产生冲突。Google 了许多教程,对于一个小白来说,而且电脑上已经配置好了公司的账号,自然不敢瞎搞。参考对比了几篇教程,都或多或少有些许遗漏,(可能对于大神来说都知道了,但对于我这种小白来说,每一步都是很重要很谨慎的)。于是根据自己的经历,给大家分享一篇相对完整的教程。废话到此为止,let’s go。

实现原理

要在同一台电脑上配置两个 GitHub 账号,(GitLab,码云同理),需要生成各自配套的 SSH Key。这样,在 clone 和 push 代码的时候,就能区分用的是哪个账号。

取消全局设定

如果之前在 git config 中全局设置过用户名和邮箱,则需要先取消设置。这个用户名和邮箱是记录每一次 commit 的用户和关联的邮箱。公司和个人用的是不同的邮箱,所以应该分别设置。这里在后面再说。

1
2
3
git config --global --unset user.name

git config --global --unset user.email

生成 SSH Key

1
$ ssh-keygen -t rsa -C "youremail@xxx.com"

按一次回车后:

1
2
3
4
5
6
7
8
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/Shinancao/.ssh/id_rsa): id_rsa_company(取个名字)
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in
id_rsa_company
Your public key has been saved in
id_rsa_company.pub.

这里我首先设置的是公司的 SSH Key,使用的是公司邮箱。记得要给 SSH Key 取一个名字,不然会使用默认的名字,当后面再设置个人的 SSH Key 时,如果还使用的默认的名字,则会把前面的覆盖掉。好了,接着按上面的方式创建个人的 SSH Key,这次我取的名字是 id_rsa_personal。这样,就生成了两套 SSH Key。如果生成的 Key 不在 .ssh 文件夹中,可以拖进去。

在 GitHub 上添加 Key

为了避免新手读者不知道怎么添加,在这里我还是提一下吧。在本地通过 cat ~/.ssh/ssh_key_name.pub 获取公钥的内容,复制,然后登录 GitHub 账号,点击 Settings->SSH and GPG keys>New SSH Key 进行添加。

在本地 SSH Agent 中添加 Key

只有在本地的 SSH Agent 中添加了 Key,这样 SSH 服务器才能找到 id_rsa。

1
2
3
ssh-add -K ~/.ssh/id_rsa_personal

ssh-add -K ~/.ssh/id_rsa_company

修改 SSH config 文件

config 文件不是默认生产的,有些人可能会没有,所以可以先创建一个。先进入到 .ssh 文件中cd ~/.ssh,然后执行 touch config进行创建。

打开刚才创建好的 config 文件,然后在里面添加如下内容:

1
2
3
4
5
6
7
8
9
10
11
# personal
Host personal.github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa

# company
Host company.github.com # 这个名字可任意设置
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_work

OK,现在让我们测试一下配置是否成功:

1
2
3
ssh -T git@personal.github.com

ssh -T git@company.github.com

如果输出以下内容:

1
Hi xxx! You've successfully authenticated

恭喜你,已经配置成功了!慢着慢着,刚才把全局设置给取消了,现在是不是要单独设置回来,没错,取消了全局设置的用户和邮箱后,我们要为每一个项目进行单独设置。我先给大家讲一下现在该如何对项目进行设置。

最后一步

由于我们设置了 Host,这就相当于是 HostName 的别名。比如现在对个人 GitHub 上的 repo 进行 clone 的时候,要改成 git clone git@personal.github.com:xxx/xxx.git。如果是已经克隆到本地的项目,则可以在项目中修改:

1
2
3
$ git remote rm origin

$ git remote add origin git@personal.github.com:xxx/xxx.git

可以执行 git remote -v 查看是否修改成功。

然后在每个项目中,执行:

1
2
3
git config user.email "xxx@xxx.com"

git config user.name "xxname"

对公司和个人项目单独设置用户名和邮箱。
可以查看一下:

1
2
3
git config user.name

git config user.email

push 的话还是照常使用:git push origin master

好啦,全部设置完了,终于可以继续把我 GitHub 上的博客迁移过来了。

迁移的教程:使用hexo,如果换了电脑怎么更新博客?

再贴一个我的个人博客:hzsss

Powered by Hexo and Hexo-theme-hiker

Copyright © 2013 - 2019 Acan's blog All Rights Reserved.

访客数 : | 访问量 :