如何在一台电脑上设置多个github账号

如何在一台电脑上进行多个github账户的配置?

1 生成秘钥

首先需要对自己的多个不同账户生成对应的秘钥.比如我有两个账户分别为jaspershen和shenxt,这时候对两个账户分别生成对应账户,注意一定要区分开,不能后面一个将前面一个覆盖了.

1.0.1 生成jaspershen的秘钥

ssh-keygen -t rsa -C “shenxt1990@163.com”

这时候会在~/.ssh/(我使用的是mac)文件夹下自动生成两个文件,分别是id_rsaid_rsa.pub.

1.1 生成shenxt账户的秘钥

注意一定要重命名,我们这边将其命名为id_rsa_2.

ssh-keygen -t rsa -f ~/.ssh/id_rsa_2 -C "kagawabale@163.com"

这时候会在~/.ssh/文件夹下生成新的秘钥文件,分别是id_rsa2(秘钥)和id_rsa_2.pub(公钥).

2 将两个秘钥分别添加到自己对应的github账户中

然后需要将两个秘钥(公钥文件)分别添加到自己对应的账户当中.

使用vi打开公钥文件即可.

vi ~/.ssh/id_rsa.pud#jaspershen账户
vi ~/.ssh/id_rsa_2.pud#shenxt账户

3 编辑配置文件

先确认在~/.ssh/文件夹中是否存在config文件,如果不存在,首先创建一个,然后对其进行编辑.内容如下:

# jaspershen
Host github_jaspershen
HostName ssh.github.com
User git
IdentityFile ~/.ssh/id_rsa

# shenxt
Host github_shenxt  # 前缀名可以任意设置
HostName ssh.github.com
User git
IdentityFile ~/.ssh/id_rsa_2

需要更改的地方是HostIdentityFile,修改为自己能够识别的内容,以及自己生成的秘钥即可.

注意,HostName一定要是ssh.github.com,不然可能会失败.

修改完之后,保存退出,然后在terminal下命令以下命令,看是否正常:

ssh -T git@github_jaspershen
ssh -T git@github_shenxt

如果出现下面结果,说明已经正常工作:

Hi jaspershen! You've successfully authenticated, but GitHub does not provide shell access.

4 配置仓库设置

首先需要删除git配置的全局用户名和邮箱.接着在自己每个项目的仓库中按照需要设置不同的user.nameuser.email.

4.1 删除全局配置

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

4.2 设置local配置

在自己的每个文件夹(repo仓库)下,打开terminal,然后进行设置.

git config user.name `xxx`
git config user.email `xxx@xxx.com`

注意,在设置结束之后,创建git repo(git init)的时候,一定要再次检查一下用户名和用户邮箱,如果不对, 需要再次设置.

5 将本地仓库推送到远程仓库(github)

之后再添加远程仓库的时候,就不能直接使用http的方式了,只能使用ssh方式.

git remote add origin git@github_jaspershen:jaspershen/example.git # jaspershen account
git remote add origin git@github_shenxt:shenxt/example.git # shenxt account

其中github_jaspershen或者github_shenxt就是在配置文件中设置的Host.

然后使用git remote -v确认是否连接上.

最后进行推送.

git push origin master

其实,上面的配置文件的意思就是,按照你设置远程仓库时使用不同的Host名称,查找~/.ssh/config文件使用不同的SSH 文件连接到GitHub。这样你就将是以不同的身份访问GitHub仓库。

Avatar
Xiaotao Shen PhD
Postdoctoral Research Fellow

Metabolomics, Multi-omics, Bioinformatics, Healthcare.

Related

Next
Previous
comments powered by Disqus