经常怀疑产品经理的脑洞,但是真碰见这样的需求的时候我也很绝望~
同一台电脑两个hexo,其实主题应该是这个。

同一台电脑两个github账户

这样的需求我也是不知所措,略过那些需求来源。

我想要在同一台电脑上部署两个hexo的博客,但是github的{username}.github.io这样的格式定死了只能一个账户适配一个博客。不过mac上的终端第一次用git的时候也已经把账户信息记录在了~\.gitconfig下的

7-github-2

显示隐藏文件:defaults write com.apple.finder AppleShowAllFiles -bool true,终端输入之后可以看到隐藏文件。
这是我们第一次记录的github账号以及账号对应的邮箱。修改方式:

1
2
git config user.name"username"
git config user.email"xxx@xx.com"
  1. 生成ssh密钥:
    假设:
    A账号的邮箱是:xxx@xx.com
    B账号的邮箱是:yyy@yy.com
    那么首先分别为他们生成对应的ssh密钥并命名保存:
    $ ssh-keygen -t rsa -C "xxx@xx.com"
    7-github-3
    输入:/Users/{yourname}/.ssh/id_rsa_a之后连按三个回车,保存A的密钥。
    B同理:
    $ ssh-keygen -t rsa -C "yyy@yy.com"
    7-github-4
    输入:/Users/{yourname}/.ssh/id_rsa_b之后连按三个回车,保存B的密钥。

  2. 保存至github的账户:

    • 复制A账号需要的公钥:pbcopy < ~/.ssh/id_rsa_a.pub
      添加ssh公钥得先登录A账号
      7-github-5
      最后马赛克是xxx@xx.com,就是当前登录的账号对应的邮箱。然后Add。

      • 复制B账号需要的公钥:pbcopy < ~/.ssh/id_rsa_b.pub
        登出A账号,登录B账号,同样的页面,添加ssh公钥,将复制的b密钥粘贴保存进去。邮箱与b账号注册的保存的邮箱相同。
  3. 多账号配置:
    ~/.ssh文件夹先新建一个config文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    #A账号
    Host github.com_a
    HostName github.com
    IdentityFile ~/.ssh/id_rsa_a

    #B账号
    Host github.com_b
    HostName github.com
    IdentityFile ~/.ssh/id_rsa_b

    下一次的push可以这样,就是用A账号提交。

    1
    2
    $ git remote add origin git@github.com_a:xxx/xxx.git
    $ git push origin master

    同理改为github.com_b就是用B账号提交。

  4. 使用git上传代码
    github.io创建仓库时前缀需要与用户名相同,所以不能再同一个账户下搭建两个io博客。所以只能新注册一个b账号。
    在这之前,我们分别在两个文件夹下已经搭建好了hexo博客。然后hexo d时:
    ERROR Deployer not found:git报错了。有人知道的话求告知
    修改了对应的账号也还是不行。所以两个账号都用hexo d来上传代码我已经放弃了= =。
    既然这样,上面的配置就起作用了!两个博客时只有一个账号的可以使用hexo d,另一个账号直接在hexo g之后进入public文件夹,使用git,push到对应的仓库即可。效果是一样的:

    1
    2
    3
    4
    5
    6
    $ cd public
    $ git init
    $ git add .
    $ git commit -m "first commit"
    $ git remote add origin git@github.com_b:yyy/yyy.github.io.git
    $ git push origin master

    这里使用了B账号对应的hostname,这样即是使用b账号的密钥进行git。下一次再进行操作时候只需要:

    1
    2
    git commit -m "next commit"
    git push

错误

有时候会遇上这个问题,在hexo g的时候:
Error: Cannot find module './build/Release/DTraceProviderBindings'
只需要
$ npm install hexo --no-optional