因为遇到需要使用两个github账号来做不同账号的代码同步,于是学习了下。主要解决同一台电脑上两个github账号切换的问题。 如果已经有主账号了,不需要再次生成,下面仅为副账号生成设置步骤。
生成副账号的SSH
第一步,我们需要为账号生成密钥: 命令:
ssh-keygen -t ed25519 -C "your_email@work.com"
在输入命令,修改对应的邮箱后,回车。
需要注意的是,当其出现以下提示时,需要手动修改一下文件名, 否则可能会覆盖已有的默认 SSH,比如我们修改成 ~/.ssh/work_ed25519,注意此处的路径,如果前面的路径设置没效果或者错误,可以使用绝对路径/Users/you/.ssh/work_ed25519
Enter file in which to save the key (/Users/you/.ssh/id_ed25519): ~/.ssh/work_ed25519
然后一路按 enter 即可。接下来我们可以通过以下方法来确认是否成功生成密钥:
ls ~/.ssh/ id_ed25519
id_ed25519.pub work_ed25519
work_ed25519.pub
若列出以上文件则表示成功。
添加SSH公钥
把生成的公钥传入 GitHub 中,在github头像上点击出菜单,settings,在设置页面左侧菜单栏中找到SSH and GPG keys,然后选择 New SSH key 并把 work_ed25519.pub 中的公钥复制进去即可。
将 SSH 密钥加入 ssh-agent 并进行配置
打开 ~/.ssh/ 下的 config (若没有的话新建即可,就是一个config文件,没有后缀)文件并输入以下的信息并保存:
Host github.com
User mainUsername
AddKeysToAgent yes
IgnoreUnknown UseKeychain
IdentityFile ~/.ssh/id_ed25519
Host work.com
HostName github.com
User subUsername
AddKeysToAgent yes
IgnoreUnknown UseKeychain
IdentityFile ~/.ssh/work_ed25519
需要注意的几个点:
- 第一组可以设置成默认的主账号,这样
clone时可以不需要修改。第二组设置为副账号,在clone时就需要进行修改了,下面会单独来说下如何修改。 - User这里需要填写账号的用户名,可以在
settings页面的头像旁看到,括号中的就是账号的用户名,需要确定好不要写错。 - 确认好IdentityFile所对应的生成账号文件。
如何使用副账号进行Clone
配置就完成啦,当我们需要 clone 公司的项目时,只需要略微修改其 SSH 即可:
# 原始链接
git@github.com:公司名/项目名.git
#需要修改成
git@work.com:公司名/项目名.git
需要修改的地方有两处:
github.com需要修改为config文件中配置的Hostwork.com- 公司名,需要修改为config文件中配置的User
subUsername
配置工作区账号
通过 git config user.email 来查看当前邮箱时,发现其实还是主账号的邮箱,这样副账号commit时,会使用主账号来进行推送。这时就需要配置对应的工作区账号。
在项目目录执行如下命令:
git init
git config --local user.email work@email.com
work@email.com 为副账号的邮箱。这样我们就为该工作区配置好了正确的信息。在配置完工作区账号后,我们可以通过 git config user.email来查看当前目录下的邮箱,就已经替换成副账号的邮箱了。
配置流程可以总结如下:
- 为副账号配置
SSH - 将SSH公钥配置到
Github - 配置
Config文件 - 设置工作区
user.email