把安知鱼主题作为hexo的子模块

前言

先致谢🙏安知鱼,好好看的主题

之所以要把安知鱼主题作为子模块,是因为推送到github上面时发现不会推送安知鱼主题上去,不方便换环境,除非把主题配置文件(_config.anzhiyu.yml)放到根目录, 并且不魔改主题的情况下,就可用管

把主题当做子模块可以方便更新主题

有关父子模块介绍请看:父子模块
密码样式的文本:这里没有验证码

在安装主题时创建子模块

在hexo根目录下执行

1
git submodule add https://github.com/anzhiyu-c/hexo-theme-anzhiyu.git themes/anzhiyu

魔改主题、commit、push

如果主题里的文件发生变化,这是子模块的区域,所有的git操作应在子模块中运行

删除主题子模块

如果不再需要子模块,您可以:

  1. 删除子模块目录
    1
    2
    git rm --cached themes/anzhiyu
    rm -rf themes/anzhiyu
  2. 编辑 .gitmodules 文件,删除与子模块相关的条目。
  3. 编辑 .git/config 文件,删除与子模块相关的部分。
  4. 提交更改
    1
    2
    git commit -m "删除子模块"
    git push

常见错误

错误信息 “fatal: ‘themes/anzhiyu’ already exists in the index” 表示您尝试添加子模块的路径 themes/anzhiyu 已经在 Git 的索引中存在。这通常发生在您已经创建了这个目录但没有将其添加到 Git 版本控制中,或者您之前尝试添加子模块但失败了。

要解决这个问题,请按照以下步骤操作:

  1. 检查 themes/anzhiyu 目录的状态
    1
    git status
    如果 themes/anzhiyu 目录被列为 “Untracked files”,那么您需要将其从 Git 索引中移除。
  2. 移除 themes/anzhiyu 目录
    如果目录是未跟踪的,您可以直接删除它:
    1
    rm -rf themes/anzhiyu
  3. 如果目录已跟踪,请将其从 Git 索引中删除
    如果目录已经被 Git 跟踪,您需要使用 git rm 命令来删除它:
    1
    git rm -r --cached themes/anzhiyu
    这个命令会从索引中删除目录,但不会删除目录中的文件。
  4. 提交更改
    1
    git commit -m "Remove themes/anzhiyu directory"
  5. 重新添加子模块
    现在您可以重新尝试添加子模块:
    1
    git submodule add https://github.com/anzhiyu-c/hexo-theme-anzhiyu.git themes/anzhiyu
  6. 提交子模块更改
    1
    git commit -m "Add anzhiyu theme as a submodule"
  7. 推送更改到远程仓库
    1
    git push origin master  # 或者是 main,取决于您的默认分支名称
    确保在执行这些步骤之前,您已经备份了 themes/anzhiyu 目录中的任何重要文件,以防不小心删除了未提交的更改。