Hexo主题同步

Author Avatar
w4lle 6月 06, 2016

问题

由于升级Node.js导致要重新安装Hexo,安装完新版的Hexo发现有些东西不能用,搞来搞去把本地仓库搞乱了,就想着把本地的仓库删掉吧,在从远程clone一份下来。
博客用的是Next主题,结果之前的主题配置themes/next/目录根本就没有上传到远程分支,导致主题所有的定制化修改全部丢失。此问题已经提交到Next主题Issues中。

原因

先看下Next主题的使用方法

1
git clone https://github.com/iissnan/hexo-theme-next themes/next

这样配置完其实thems/next/就是一个包含.git/的子项目仓库。所以在push主项目的时候不会上传子项目,子项目的文件夹是灰的,并且里面是空的。如图
此处输入图片的描述

所以从远程仓库拉取的项目中是没有Next主题的。

解决

解决方法在Issues里也说了,用fork + subtree

首先要fork Next,然后拉取到本地做修改,修改好后push到远程仓库。
然后用git subtreethemes/next/当做子项目来统一管理。subtree的用法可以看使用GIT SUBTREE集成项目到子目录

具体步骤:

  1. 删除themes/next/push到远程

    1
    2
    3
    4
    5
    6
    rm -rf themes/next
    gst
    ga .
    git add --all
    gcmsg "delete next"
    ggpush
  2. 绑定子项目

    1
    2
    git remote add -f next git@github.com:w4lle/hexo-theme-next.git
    git subtree add --prefix=themes/next next master --squash
  3. 更新子项目

    1
    2
    git fetch next master
    git subtree pull --prefix=themes/next next master --squash
  4. 从子目录push到远程仓库

    1
    git subtree push --prefix=themes/next next master

现在再去远程仓库看themes/next/就有内容了,并且跟子项目的远程仓库可以保持更新,在主项目中修改也可以push到子项目的远程。再也不用担心主题配置丢失了。

参考

本文地址 http://w4lle.github.io/2016/06/06/Hexo-themes/