前言
大多数的我们都会遇到这样一个问题:公司有一个 github 账户,这个是专门为工作准备的。而我们自己也有一个自己的私人 github 账户,有事没事做做自己的项目,写写自己感兴趣的东西。可是,我们怎么在电脑上把公司 github 切换到自己的私人github 账号上呢?
操作过程
- 创建ssh密钥;
- 将密钥添加到 github 账户;
- 创建 config 文件,管理单独的 key
- 更新存储的 key
- 测试 git clone 和 git push
- 在终端上切换 github 账号
注意:以下为windows上操作,如果是在别的操作系统上,直接换成对应的操作命令即可。
创建SSH密钥
以多个帐号为例,一个帐号为admin,一个帐号为manager
- 打开cmd
- 依次执行命令
1 | cd C:\Users\account\.ssh |
- 当出现 “Enter file in which to save the key” 的提示时,将文件保存为 id_rsa_<>。将文件保存为 ~/.ssh/id_rsa_admin和 ~/.ssh/id_rsa_manager;
生成后会在C:\Users\account\.ssh中看到以下四个文件
- id_rsa_admin
- id_rsa_admin.pub
- id_rsa_manager
- id_rsa_manager.pub
将各自新密钥绑定到各自对应github账号
此处不做详细描述
创建一个配置config文件来管理key
在C:\Users\account\.ssh路径中创建一个名为config的文件
编辑文件内容:
1 | Host admin |
更新存储的key
在更新存储之前,我们要先检查一下本地的 OpenSSH 服务有没有开启,不然会报错。
开启 ssh 服务的流程为:
- 设置 → 管理可选功能 → 添加功能 → [OpenSSH服务器]
- 计算机管理 → 服务和应用程序 → 服 务→ OpenSSH Authentication Agent&OpenSSH Server → 右击
开启SSH服务之后,我们就可以使用ssh命令了。
清除当前存储的认证:
1 | C:\Users\account\.ssh\>ssh-add -D |
增加新的keys:
1 | C:\Users\account\.ssh\>ssh-add id_rsa_admin |
验证一下! github 是否能识别到这些 keys,在cmd中输入:
1 | ssh -T admin |
可以看到 “Hi huangyuanzhen! You’ve successfully authenticated, but GitHub does not provide shell access.” 的提示语。这表明,github 能识别这些 keys 了。
测试 clone 和 push
找个admin帐号下对应的正常的项目,举个例子git地址为:git@github.com:xxxx(github帐号)/hello-github.git
将地址改为:git@admin:xxxx(github帐号)/hello-github.git
然后测试正常的clone和push操作
在终端上切换 github 账号
如果之前已经用 git remote add 和远程 仓库建立过连接,我们需要先清除当前连接,不然会报错:“fatal: remote origin already exists.”;清除当前连接之后,然后连接新的账号里的仓库,如:
1 | git remote rm origin |
这样就能做到切换远程,必须将地址改为对应的config里面的host