最近看到有不少朋友在问Stellar怎么更新版本,应该是刚刚接触hexo,那俺就浅浅讲一下吧
Git
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub
首先我们需要对git的基本流程有个初步的概念,这里我推荐你花几分钟分钟去看 Git工作流和核心原理 这个视频的前三分钟
好了,相信聪明的你看完了就已经对git的基本流程有一定的了解了
吼,那么git和我们的hexo有什么关系呢?
其实你的整个hexo文件夹就是一个本地git仓库,看看你的仓库里面,是不是有
.git
这个隐藏文件夹呀,这就是证据咧
然后你回想一下你平时生成上传文章的时候执行的命令
hexo g
、hexo d
,是不是感觉和git操作有点像?俺来解析一下
你在使用 hexo g
时,hexo会在本地将你的
markdown
文件渲染成 html
网页文件并将文件存放在 blog/public
文件夹中
而 hexo d
则代替了你
git add .
、git commit
、git 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
文件夹中
git submodule add https://github.com/xaoxuu/hexo-theme-stellar.git themes/stellar |
然后我们进入 themes/stellar
文件夹,在此目录下右键
git bash
自定义
自定义主题源码的(你都会自定义了还需要我教你咋更新嘛🥹)
与最新版不同的是,你需要先fork一下主题仓库,并将你fork的仓库作为子模块添加到
theme/stellar
中,自行替换你的仓库链接
git submodule add https://github.com/#yourname#/hexo-theme-stellar.git themes/stellar |
大致流程是这样的:你先把自己fork的仓库添加到本地,一顿唰唰唰改完之后,git三件套(git add .
、git commit
、git push
)到你fork的仓库里面,后面主题更新的时候,你先在github上面
update branch
一下
我这里做个示范,比如我想要为网站加上一个线条背景,参考
改 blog/themes/stellar/layout/layout.ejs
在直接改代码
<!DOCTYPE html> |
并在主题配置文件 _config.stellar.yml
中增加一行
canvas_nest: true |
改完了 hexo cl
清除缓存再 hexo g
&
hexo s
本地预览看看有没有错
没出错的话现在我们上传到github,进入 themes/stellar
主题文件夹中,右键 git bash
,并在弹出窗口中依次执行
git add . //点不要漏了 |
没有报错的话就可以去你的github仓库中查看是否更新成功了
若想要更新的话,从主题拉取更新的代码
吼,那么有朋友就问了,说:我改动的代码和上游出现了冲突conflicts
怎么办捏?github的
Sync fork
只提示我说要我放弃我的改动啊?
欸,不要慌,你看看 Sync fork
旁边的是啥?Contribute
对不对,点一下
Open pull request
欸界面跳转了,肿么办捏?compare across forks
然后点 creat pr
就可以啦,然后你的仓库就会出现一个pr
怎么解决冲突这里官方都给了说明了捏,如果还不是很明白的话可以搜搜Github如何解决冲突,俺就不在这里献丑了
经由@xaoxuu佬提醒,pull机器人会改你配置,所以不再推荐这个机器人
OK,Stellar更新至此就结束了
备份
手动备份
血与泪的教训,一定一定一定要备份,否则哪天你文件夹丢失了都没地方哭去
所有版本的备份方法都相同
你需要备份你整个 source
文件夹和
_config.yml
、_comfig.stellar.yml
、package.json
即可
恢复的时候把他们放到原来的位置,根目录下右键
git bash
借助插件
除了手动备份,你还可以借助 hexo-git-backup
插件
链接在这里