前言

因為團隊項目需求,包含現在這個部落格,我必須另外再管理兩個 Github Pages 項目。而這件事折騰了我一個晚上,故在此備忘。

其中這兩個項目都以 Hexo 分別架設在不同的 Github 帳號的 Github Pages 上。

理論

一般來說,我們用的 push 都是透過 https protocol 來進行的,方便簡單,除了第一次要輸入帳號密碼,後面都是 add, commit, push 素質三連即可。

遺憾的是,如果要管理多個帳號,就必須改使用 ssh 了。

所以簡單來說,我們要做的就是:

  • 分別創立 github 帳號,並新增 github pages 的 repo
  • 在本地分別創建 hexo directory
  • ssh-gen ssh key,並分與 github 帳號設定配對
  • 配對完還得在本地進行 ssh config 的對應設定,也別忘了 add 到 ssh-agent 中
  • 然後就可以用 hexo 的 hexo-deployer-git 進行推送了

一些細節

創建 hexo directory

1
2
3
4
> mkdir blogA
> cd blogA
> npx hexo init
> npm install

ssh 設定

ssh-keygen -t rsa -C "accountA@gmail.com"

此時 ~/.ssh 中就會出現新的 key 與 key.pug,而需要被配對到 github ssh keys 的就是其中的 key.pug,把公鑰複製過去就對了。

接著別忘了在本地提交 key 給 ssh-agent,輸入 ssh-add ~/.ssh/blogAkey 提交。

接著創建另一個 key。

接著在 ~/.ssh 裡 mkdir 一個 config 得到 ~/.ssh/config,編輯它:

1
2
3
4
5
6
7
8
9
Host blogA
HostName github.com
User git
IdentityFile ~/.ssh/blogAkey

Host blogB
HostName github.com
User git
IdentityFile ~/.ssh/blogBkey
  • 其中 host 填入任一代稱,後面配對使用。
  • IdentityFile 填入對應的 key file。特別注意是「identity」,不是「identify」,我就是自己打太順,在這邊報錯了很多次還自己沒發現。

hexo 部署

npm install hexo-deployer-git --save

修改 hexo 資料夾的 _config.yml 中的 deployment 設定:

1
2
3
4
deploy:
type: git
repo: git@blogA:blogA/blogA.github.io.git
branch: master
  • 其中 repo 的部分,在 github pages 的引導頁面中,給你的 ssh 地址應該是 git@github.com:blogA/blogA.github.io.git 。但因為我們在 config 中已經設定好 ssh 的 host 代稱了,所以以代稱把 github.com 取代掉。

然後就可以 npx hexo deploy 了。