如何在本地管理和切换多个 github 帐号?

前言

大多数的咱们都会遇到这样一个问题:公司有一个 github 帐户,这个是专门为工做准备的。而咱们本身也有一个本身的私人 github 帐户,有事没事作作本身的项目,写写本身感兴趣的东西。但是,咱们怎么在电脑上把公司 github 切换到本身的私人github 帐号上呢?html

我公司内部建议用 smartgit 来精简 git 的操做,可是,我却没办法在上面切换成本身的帐号,这意味着我必须在本身的电脑上使用本身的私人帐号。oh, 这真是一个烦人的问题。git

通过在 google 上查找资料和不断地试错,我终于成功的解决了这个问题。如今,让我来介绍如下这个是怎么解决的吧。github

本质上,这只是一个平衡 git 和 ssh 配置的问题——实际上这并无看上去那么糟糕。—Michael Hermanshell

操做过程

它的操做包括windows

  • 建立ssh密钥
  • 将密钥添加到 github 帐户;
  • 建立 config 文件,管理单独的 key
  • 更新存储的 key
  • 测试 git clone 和 git push
  • 怎样在终端上切换 github 帐号

1. 建立 SSH 密钥

以我为例,我有两个 github 帐户,一个工做用的,用户名是 yuanzhen-kooboo,;另外一个是私人的:huangyuanzhen。因此,我要建立两个密钥,每一个帐号一个:服务器

操做为:ssh

  • 打开cmd;
  • 依次输入命令:
cd ~/.ssh
    ssh-keygen -t rsa -C "1356409766@qq.com"
    ssh-keygen -t rsa -C "3083074260@qq.com"
  • 当出现 "Enter file in which to save the key" 的提示时,将文件保存为 id_rsa_<>。在个人示例中,我将文件保存为 ~/.ssh/id_rsa_personal 和 ~/.ssh/id_rsa_company;

效果如图:编辑器

找到 C:\Users\huangyuanzhen.ssh 下,能够看到,生成了下面四个文件:ide

  • id_rsa_personal
  • id_rsa_personal.pub
  • id_rsa_company
  • id_rsa_company.pub

2. 将新密钥绑定到 github 帐号

  • 用记事本打开 id_rsa_personal.pub 文件,全选复制;
  • 来到个人私人github帐户,找到 setting,打开,点击 "SSH and GPG keys" 选项,能够看到有一个 “add SSH key" 按钮,将刚才复制的内容粘贴到文本区域,同时添加一个相关标题;成功以后是这个样子的:

  • 相对的,在其余帐户上重复相对应的操做;以个人为例,则是把 id_rsa_company.pub 的内容粘贴到我工做帐户 yuanzhen-kooboo 的 ssh 上;

3. 建立一个配置 config 文件来管理 key

在 ~/.ssh/ 目录下建立一个 config 文件工具

echo test>config

找到这个文件,并用编辑器打开(个人是 vscode),而后将下面内容写入文件,保存:

# huangyuanzhen
    Host personal
       HostName github.com
       User git
       IdentityFile ~/.ssh/id_rsa_personal
    
    # yuanzhen-kooboo
    Host company
       HostName github.com
       User git
       IdentityFile ~/.ssh/id_rsa_work

这里咱们的主机名称不是 github.com,而是将其命名为 personal 和 company。不一样之处在于,咱们如今附加了以前建立的新标识文件: id_rsa_<>;

4. 更新存储的key

在更新存储以前,咱们要先检查一下本地的 OpenSSH 服务有没有开启。否则会出错。

开启 ssh 服务的流程为:

  1. 设置 → 管理可选功能 → 添加功能 → [OpenSSH服务器]
  2. 计算机管理 → 服务和应用程序 → 服 务→ OpenSSH Authentication Agent&OpenSSH Server → 右击

启动以后看到的是这样子的:

开始 SSH 服务以后,咱们就能够使用ssh 命令了。

清除当前存储的认证:

C:\Users\huangyuanzhen>ssh-add -D
    // All identities removed.

增长新的keys:

C:\Users\huangyuanzhen\.ssh>ssh-add id_rsa_company
    Identity added: id_rsa_company (id_rsa_company)
   
    C:\Users\huangyuanzhen\.ssh>ssh-add id_rsa_personal
    Identity added: id_rsa_personal (id_rsa_personal)

验证一下! github 是否能识别到这些 keys;在cmd中输入:

ssh -T personal

能够看到 "Hi huangyuanzhen! You've successfully authenticated, but GitHub does not provide shell access." 的提示语。这代表,github 能识别这些 keys 了。Cool !

5. 测试 clone 和 push

测试 git clone

以个人私人帐户为例,我想把 huangyuanzhen 帐号上的 Look-Thinking 仓库克隆到本地,而后操做。

在cmd 上输入:

git clone git@personal:huangyuanzhen/Look-Thinking.git

能够看到能够成功把该仓库克隆过来:

<font color=#0099ff size=3 face="黑体">若是要操做仓库,执行命令 "cd Look-Thinking → code . "就能够操做了。</font>是否是感受很是方便?

测试 git push

仍是以在个人私人 github 帐号 huangyuanzhen 上操做为例。在 帐号上建立 work-test 仓库;而后在本地建立 test 文件夹:

E:\mkdir test
    E:\cd test
    E:\test>echo test>readme.md

建立好 readme.md 文件后,将其 push 到 github ;

git init
    git add .
    git commit -am "first commit"
    git remote add origin git@personal:huangyuanzhen/test.git
    git push -u origin master

将文件push成功以后是这样的:

能够在github帐户上看到在本地对 readme.md的操做结果。git pull 同理。

<font color=#0099ff size=5 face="黑体">咱们怎样用命令行切换帐号呢?</font>

若是以前已经用 git remote add 和远程 仓库创建过链接,咱们须要先清除当前链接,否则会报错:“fatal: remote origin already exists.”;清除当前链接以后,而后链接新的帐号里的仓库,如:

git remote rm origin
    git remote git add origin git@company:yuanzhen-kooboo/work-test.git

这里,咱们就断开了以前和 huangyuanzhen 帐号的链接,而后切换到了 yuanzhen-kooboo 帐号。

这样配置好以后,不须要再用 smartgit 等一些辅助工具,直接在终端使用命令行操做,我感受十分方便了呢!动手试试吧。

注意:上面命令行是在windows上操做,若是是在别的操做系统上,直接换成对应的操做命令便可。

资料

相关文章
相关标签/搜索