hexo-butterfly-魔改说明
魔改需要注意的点:
单独将主题的配置文件拎出来(butterfly/_config.yml)调整为_config.butterfly.yml
,放置在项目根目录,避免主题迭代升级覆盖了原有的配置信息
针对相关资源的引用,不建议把项目所需的文件或者资源放在主题下的source文件夹下,伴随着主题的迭代升级会将里面的内容覆盖掉,因此需要在项目根目录下的source文件夹下创建文件夹存放资源数据
1.hexo-butterfly主题初始化
通过 git submodule 来同步第三方主题
一般在选择第三方主题的仓库直接git clone,但实际场景下很有可能在原来主题基础上做一些自定义的小改动,为了保持多终端的同步,需要将这些改动提交到远程仓库,而第三方仓库是无法直接push的。因此如果需要对第三方仓库做相应的扩展则fork该第三方主题仓库(在自己账号下生成一个同名的仓库),随后git clone自己账号下的仓库url,从而可对主题进行自定义魔改
但基于这种场景则会出现git仓库的嵌套问题(Git 仓库嵌套使用后,被嵌套的 Git 仓库不能被外层 Git 仓库检测到,即被嵌套的git仓库的修改无法被外层仓库感知),可通过git submodule来解决问题
初始化步骤说明:
fork指定仓库路径:进入指定仓库,点击Fork按钮,稍等片刻便可在本地仓库看到对应同名主题仓库生成(如果需自定义则可通过指令方式实现)
取消原有主题项目引用,先git clone自身fork的主题仓库,随后通过git submodule方式导入自己的自定义主题仓库从而解决git仓库嵌套问题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| # 普通方式fork项目 # 1.clone项目到本地指定路径(有master、dev分支,此处选择较新的dev分支) git clone -b dev git@github.com:username/hexo-theme-butterfly.git themes/butterfly
# 2.本地新增dev-custom分支用于自定义魔改 git remote # 进入themes/butterfly目录,查看远程仓库(有origin、upstream) git branch dev-custom # 创建dev-custom自定义魔改分支 git push origin dev-custom # 将新分支推送到指定的远程仓库(此处origin为远程仓库名称)
# 3.切换到新增的dev-custom分支,随后将其与远程仓库构建关联 git branch -a # 查看所有分支 git branch(不带参数标识查看当前分支,其中结果中标*的标识当前使用的分支) git checkout dev-custom # 切换本地分支dev-custom git branch --set-upstream-to=origin/dev-custom # 将当前分支代码与远程仓库新分支进行关联
# 4.添加文件,推送远程仓库 git add -A #提交到暂存区 git commit -m 'XXXXXXX' # 提交到本地分支 git push origin dev-custom # 推送到远程仓库
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| # git管理hexo项目
# 1.构建git仓库存储hexo项目(此处直接在hexo项目中创建新仓库用于存储blog源文件信息) # a.使用github desktop:用小乌龟初始化git项目,随后通过github desktop发布仓库进行操作即可
# b.使用git指令:先在github上创建远程仓库,随后本地初始化仓库信息与远程仓库进行关联 # 先在github上创建远程仓库wv-blog-source cd wv-blog-source git init # 初始化仓库(初始化完成,生成.git文件夹) git add -A # 添加所有文件到暂存区 git commit -m "descr"# 提交 git remote add origin 远程仓库地址 # 将本地创建的仓库推送到远程github仓库(远程仓库地址对应刚在github新建的远程仓库) git push -u origin master # 新建仓库第一次推送指令执行 # 上述指令执行完成,则可检查github对应仓库信息是否推送成功
# 2.使用git submodule解决仓库嵌套问题 git submodule add git@github.com:username/hexo-theme-butterfly.git themes/butterfly # 上述指令构建完成,则可在外层git项目中生成.gitmodules文件,随后父工程则可感知子工程的文件变动
|