引用Hexo主题导致git仓库相互包含的问题

使用 Hexo 主题的方式一般有两种:一种是通过 npm 安装在 node_modules 文件夹下,另一种方式是通过 git clone 方式安装在 themes 文件夹下。由于第一种方法可能会造成 node_modules 相互依赖的一些问题,我使用了第二种方法进行管理主题。

在使用第二种方式管理的时候,由于本身的Hexo博客源文件是一个git仓库,而主题themes也是一个git仓库。出现了相互包含的情况,因此需要使用 git submodule [^1]的方法管理包含的主题仓库。

  1. 首先,下载和安装butterfly主题,具体参见官方文档。[^2]

注意

这里需要按照 git clone 的方式安装。同时,安装主题也可以直接使用参考1[^1]中的 git submodule add 的方式,这样可以省略后续步骤。这里后续讨论直接使用 git clone 之后的情况。

  1. 然后,在使用主题时,尽量不要改动主题文件夹下的文件,避免日后进行 git pull 更新的时候产生冲突问题。

  2. 在 Hexo 根目录下,创建并编辑 .gitmodules 文件,内容如下:

    1
    2
    3
    [submodule "themes/butterfly"]
    path = themes/butterfly
    url = https://github.com/jerryc127/hexo-theme-butterfly
  3. 使用 git add . 将文件交由git管理,这时会提醒(warning: adding embedded git repository: themes/butterfly),暂时忽略。然后,使用 git submodule update --init --recursive 命令进行更新。

  4. 使用 git submodule status 检查当前状态即可,如果有主题名、版本号输出,这说明加入submodule成功。

以上是省略了部分操作的步骤,仅供参考。

使用 Hexo d 部署,需要每次输入账号密码的问题

首先,确保在 github 上已经成功添加了 ssh ,可以通过 ssh -T git@github.com 进行验证。

然后,安装 hexo 插件 hexo-deployer-git 。在配置文件中,加入 hexo-deployer-git 的配置。

1
2
3
4
deploy:
type: git
repo: git@github.com:XXXXXXXXX/XXXXXXXXX.github.io.git
branch: main

注意

这里的repo地址一定是 ssh 方式访问的地址,如果使用 https 格式的地址,则需要每次部署的时候都要输入账号密码,比较麻烦。[^3]

最后,通过 hexo d 部署。

参考

[^1]: 子模块 | Learn Version Control with Git
[^2]: Butterfly 安裝文檔(一) 快速開始 | Butterfly
[^3]: 配置好ssh key后仍然要求输入密码 | Hexo