多终端+多Github账户部署Hexo

需求

  1. 实验室和宿舍电脑(Windows)都可以写Hexo博客
  2. 两个Github账户需要共存,一个用于开发,一个用于博客

思路

个人情况:

实验室电脑称作PC_1(已配置Hexo);宿舍电脑称作PC_2(未配置Hexo);用于开发的GitHub账户称作code;用于博客的称作blog

整体思路:

在Github账户blog上新建一个仓库(Private或Public都可以)存放Hexo文件,以后不论是哪台电脑写博客都用这个仓库进行同步

多Github账户配置

所有的终端都需要进行这步配置,之前尝试用 Gum 管理多 GitHub 账户,无奈被 Windows 自带的凭据管理器搞得心烦意乱,于是柳暗花明又一村,SSH 大法好 :

一条明路:放弃Https吧,改用SSH

  1. 生成两个 ssh key:ssh-keygen -t ed25519 -C "your_email@example.com",并分别添加至 code 和 blog

  2. 配置 config 文件

    • 打开 .ssh目录(默认在C:\Users\XXX\.ssh),找到 config 文件,如果没有就创建一个,不需要后缀

    • 修改内容至如下(行内 # 为注释内容需手动去除):

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      # config for code
      Host code.github.com # 自定义前缀
      HostName github.com
      IdentityFile C:\\Users\\XXXX\\.ssh\\id_code # 密钥一 路径
      PreferredAuthentications publickey

      # config for blog
      Host blog.github.com # 自定义前缀
      HostName github.com
      IdentityFile C:\\Users\\XXXX\\.ssh\\id_blog # 密钥二 路径
      PreferredAuthentications publickey
  3. 测试 ssh 通信,命令行执行:ssh -T git@xxx.github.com,其中xxx为上一步中的自定义前缀,出现下图结果则通信成功,如果通信不成功,可能是 DNS 被污染,可以参考Github访问加速-Hosts自动配置

  4. 至此,以后想用哪个 GitHub 账号加上对应的前缀即可(不论是clone还是push都需要修改至用SSH协议,记得修改 _config.yml

  5. 附赠一点点Git常用指令:)

    • 更改默认分支名(因为Github默认分支名从master改为了main):git config --global init.defaultBranch main

    • 设置全局用户名和邮箱

      • 邮箱:git config --global user.email "YourEmail"

      • 用户名:git config --global user.name "YourUseName"

    • 设置代理

      • http:git config --global https.proxy http://127.0.0.1:xxxx

      • https:git config --global https.proxy https://127.0.0.1:xxxx

多终端Hexo配置

  • PC_1:

    1. 找到 Hexo 原位置,除 .deploy_git 以外都复制到另一个空文件夹中

    2. 检查该目录下有无 .gitignore 文件,如果没有则新建一个,内容如下:

      1
      2
      3
      4
      5
      6
      7
      .DS_Store
      Thumbs.db
      db.json
      *.log
      node_modules/
      public/
      .deploy*/
    3. 检查子目录下有无 .git 文件夹,有的话删除,不能嵌套上传

    4. 在 Github 账户 blog 中新建空白仓库 Hexo,并将以上文件夹上传至该仓库(直接拖拽或用Git命令)

  • PC_2:

    1. 克隆 Hexo 仓库到本地

    2. 执行以下命令(不需要 hexo init):

      1
      2
      3
      npm install -g hexo-cli
      npm install
      npm install hexo-deployer-git
    3. 执行 hexo shexo ghexo d 等命令测试是否成功

  • 上传和同步Bat脚本:

    • Hexo部署并上传至Github

      1
      2
      3
      4
      5
      6
      7
      set http_proxy=http://127.0.0.1:xxxx & set https_proxy=http://127.0.0.1:xxxx
      call hexo g
      call hexo d
      git add .
      git commit -m "auto push"
      git push
      pause
    • Hexo拉取并同步

      1
      2
      3
      4
      set http_proxy=http://127.0.0.1:xxxx & set https_proxy=http://127.0.0.1:xxxx
      git fetch --all
      git reset --hard origin/main
      pause