更换Hexo_butterfly主题记录
更换Hexo butterfly theme记录
前言
真正的第一篇 blog,记录更换 Hexo 主题遇到的坑
最近比较忙,只能抽空做一点,结果最后没做完想做的()
更换主题时遇到的问题:
上一个主题使用了 npm 直接部署,更换 butterfly 时使用 git clone ,导致目录比较混乱(告诉我们文件管理不能完全依赖git)
发现用git clone
是把一个独立的仓库克隆到 Hexo 根目录中,而 Hexo 根目录也是一个仓库,所以就产生了父子关系,即 butterfly 主题仓库成为了主仓库下的一个独立子仓库。父仓库不会对子仓库进行管理,这样违背了用 Git 进行版本控制的初衷
后来发现可以删除 butterfly 项目下的 .git 文件,把 themes/butterfly 变成一个普通的目录,这样就取消了父子仓库关系。但是如果后续主题作者有更新,就不能直接用 git pull 拉取更新,而是需要手动安装,覆盖原来的文件,重新配置主题,不易维护
Git 提供了子模块 submodule 功能,可以避免上面的问题。它允许将一个 Git 仓库作为另一个 Git 仓库的子目录,同时还保持提交的独立
这样做在本地修改和使用主题的时候是没有问题的。但是当把修改提交到 GitHub 时,会导致提交到主题原作者的仓库去
下载主题的正确操作流程如下:
- 在 GitHub 上,把原作者的主题 fork 到我们自己的仓库中
- 运行以下命令
git submodule add https://github.com/<username>/hexo-theme-butterfly themes/butterfly
username
为自己的用户名
在 push 时子模块和主模块需要分开 push,一般先推送子模块,后推送主模块
如果使用的主题仍在被维护,那么我们就能从远程获取更新
git submodule update --remote |
在其他设备工作时,与普通的 git clone 相比,只需要加上 –recursive 参数
git clone --recursive <your repo address> |
也等价于
git clone <your repo address> |
删除 submodule
git submodule deinit <submodule-name> |
暂时搁置功能
本来还想加一个 aplayer 的,认为个人网页有音乐非常重要:)
不过一直没法正常部署,只能暂时搁置到以后再做了(悲)
评论功能以后或许会做,目前有需要的话,可以通过关于页面的邮箱联系我
参考文献
星空下的YZY - 更换Butterfly主题及其美化记录
Mr.J - 使用Git Submodule管理Hexo主题
某中二的黑科技研究中心 - 在 hexo 中使用 git submodules 管理主题