最近看到有不少朋友在问Stellar怎么更新版本,应该是刚刚接触hexo,那俺就浅浅讲一下吧

Git

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub

首先我们需要对git的基本流程有个初步的概念,这里我推荐你花几分钟分钟去看 Git工作流和核心原理 这个视频的前三分钟

好了,相信聪明的你看完了就已经对git的基本流程有一定的了解了

图源视频
图源视频

吼,那么git和我们的hexo有什么关系呢?

其实你的整个hexo文件夹就是一个本地git仓库,看看你的仓库里面,是不是有 .git 这个隐藏文件夹呀,这就是证据咧

然后你回想一下你平时生成上传文章的时候执行的命令 hexo ghexo d,是不是感觉和git操作有点像?俺来解析一下

你在使用 hexo g 时,hexo会在本地将你的 markdown 文件渲染成 html 网页文件并将文件存放在 blog/public 文件夹中

hexo d 则代替了你 git add .git commitgit push 这三个命令,将 public 文件夹下的所有内容上传到Github或者其他git仓库

怎么样,还没有懂?看这张图

好了好了,不管你懂没懂,干就完了

Stellar 更新

稳定版

稳定版由npm包发放,与github上的最新版比较可能会有延迟

package.json 中修改 stellar 的版本号为你想要的版本号,然后执行:

更新完记得对照更新日志进行迁移操作

最新版

前文提到了实际上你的hexo文件夹就是一个git本地仓库,而我们的主题文件在 blog/themes 文件夹下,现在我想保证我的主题保持最新,那我就可以把Stellar的github仓库clone到我的hexo仓库里面

这样
这样

懂了煤油?就是套娃,两个git仓库套娃,一个是你的hexo仓库,另一个是stellar主题仓库

相信你已经理解了吧(不理解俺也没法子了)

我们在安装的时候使用的命令,其功能就是将 hexo-theme-stellar 仓库作为子模块添加到 theme/stellar 文件夹中

blog根目录下gitbash
git submodule add https://github.com/xaoxuu/hexo-theme-stellar.git themes/stellar

然后我们进入 themes/stellar 文件夹,在此目录下右键 git bash

自定义

自定义主题源码的(你都会自定义了还需要我教你咋更新嘛🥹)

与最新版不同的是,你需要先fork一下主题仓库,并将你fork的仓库作为子模块添加到 theme/stellar 中,自行替换你的仓库链接

blog根目录下gitbash
git submodule add https://github.com/#yourname#/hexo-theme-stellar.git themes/stellar

大致流程是这样的:你先把自己fork的仓库添加到本地,一顿唰唰唰改完之后,git三件套(git add .git commitgit push)到你fork的仓库里面,后面主题更新的时候,你先在github上面 update branch 一下

大致流程图
大致流程图

我这里做个示范,比如我想要为网站加上一个线条背景,参考

blog/themes/stellar/layout/layout.ejs

在直接改代码
blog/themes/stellar/layout/layout.ejs
<!DOCTYPE html>
<html lang='<%- page.lang %>'>
<%- partial('_partial/head') %>
<body>
<%- partial('_partial/cover/index') %>
<div class='l_body' id='start'>
<aside class='l_left' layout='<%- page.layout %>'>
<%- partial('_partial/sidebar/index') %>
</aside>
<div class='l_main<%- page.content ? "" : " list" %>'>
<%- partial('_partial/main/header/index') %>
<%- body %>
<%- partial('_partial/main/footer') %>
<%- partial('_partial/menubtn') %>
</div>
</div>
<div class='scripts'>
<%- partial('_partial/scripts/index') %>
</div>
{% if theme.canvas_nest %}
<script type="text/javascript" src="//cdn.bootcss.com/canvas-nest.js/1.0.0/canvas-nest.min.js"></script>
{% endif %}
</body>
</html>

并在主题配置文件 _config.stellar.yml 中增加一行

blog/_config.stellar.yml
canvas_nest: true

改完了 hexo cl 清除缓存再 hexo g & hexo s 本地预览看看有没有错

没出错的话现在我们上传到github,进入 themes/stellar 主题文件夹中,右键 git bash,并在弹出窗口中依次执行

git add . //点不要漏了
git commit -m "你想填写的更新消息"
git push

没有报错的话就可以去你的github仓库中查看是否更新成功了

若想要更新的话,从主题拉取更新的代码

吼,那么有朋友就问了,说:我改动的代码和上游出现了冲突conflicts怎么办捏?github的 Sync fork 只提示我说要我放弃我的改动啊?

欸,不要慌,你看看 Sync fork 旁边的是啥?Contribute 对不对,点一下 Open pull request

欸界面跳转了,肿么办捏?compare across forks

然后点 creat pr 就可以啦,然后你的仓库就会出现一个pr

这个只是一个示例,你可以看看你的pr信息
这个只是一个示例,你可以看看你的pr信息

怎么解决冲突这里官方都给了说明了捏,如果还不是很明白的话可以搜搜Github如何解决冲突,俺就不在这里献丑了

经由@xaoxuu佬提醒,pull机器人会改你配置,所以不再推荐这个机器人

OK,Stellar更新至此就结束了

备份

手动备份

血与泪的教训,一定一定一定要备份,否则哪天你文件夹丢失了都没地方哭去

所有版本的备份方法都相同

你需要备份你整个 source 文件夹和 _config.yml_comfig.stellar.ymlpackage.json 即可

恢复的时候把他们放到原来的位置,根目录下右键 git bash

借助插件

除了手动备份,你还可以借助 hexo-git-backup 插件

链接在这里


陕ICP备2022011813 | 由又拍云提供CDN加速
| 基于 Stellar 主题
十年之约