前言

我现在有两台电脑,最初第一次装好hexo环境的电脑在宿舍,姑且叫这台电脑**“老电脑"吧,代表最初拥有hexo环境的电脑,然后事情是这样的去到工位的电脑上想要更新博客总是要远程启动宿舍的电脑才行,于是想要在工位电脑也能更新,这里工位的电脑姑且叫做"新电脑”**吧。

最初搞这个多设备同步属实折腾了好半天,看了很多博客也在知乎上参考了不少,但总是需要在不同博客之间相互参考最终才完美解决,所以想要把这几天的经历总结一下。

一. hexo同步原理

1. hexo博客目录结构说明

这是老电脑上的目录结构

文件夹 说明 是否需要上传github
node_modules hexo需要的模块,就是一些基础的npm安装模块,比如一些美化插件,在执行npm install的时候会重新生成 不需要
themes 主题文件 需要
public hexo g命令执行后生成的静态页面文件 不需要
packages.json 记录了hexo需要的包的信息,之后换电脑了npm根据这个信息来安装hexo环境 需要
_config.yml 全局配置文件,这个不用多说了吧 需要
.gitignore hexo生成的默认的.gitignore模块 需要
scaffolds 文章的模板 需要
.deploy_git hexo g自动生成的 不需要

2. 同步原理

主要思路是利用git分支来实现hexo的同步。

hexo生成的静态页面文件默认放在master分支上,这是由_config.yml配置文件所决定的

你可以在全局配置文件_config.yml中找到这么一段

# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:type: gitrepo: git@github.com:username/username.github.io.gitbranch: master

因此每当我们执行hexo d的时候,hexo都会帮我们把生成好的静态页面文件推到master分支上。

(我这里可能和你的不太一样,因为之前使用http推送经常由于网络问题推送上不去,所以我复制了username.github.io仓库的ssh链接,用ssh推送成功率更搞,所以我的链接形式是git@github.com:username/username.github.io.git这样的)

在我们第一次部署好博客的时候,github给我们创建的唯一一个分支就是master分支,同时也是默认分支。默认分支就意味着每次我们执行git clone 仓库地址或者git pull 仓库地址拉取的是默认分支的代码。

但是执行hexo d 对应的分支和默认分支是没有关系的,因为这是由配置文件决定的,配置文件写的哪个分支就是哪个分支。

因此,hexo生成的静态博客文件默认放在master分支上。hexo的源文件(部署环境文件)可以都放在source分支上(可以新创建一个source分支)。然后把source分支设置成默认分支。有小伙伴可能会担心默认分支的改变会不会影响到原来的网页的正常显示,其实如果是用GitHub Pages对博客进行托管的话也很简单,第一次搭建博客默认使用master分支作为页面。在下图所示的设置里可以找到。如果不小心搞错了只要把分支设置成静态页面对应的分支就好了。

把source分支设置成默认分支,用来存放源文件,master分支依然存放静态文件。在老电脑上,我们需要把必要的源文件push到source分支。换新电脑时,直接git clone 仓库地址此时会从source分支下载源文件,剩下的就是安装hexo环境,在新电脑上就可以重新生成静态页面了,并且因为配置文件clone下来,deploy配置依旧是master分支,所以在新电脑上执行hexo d还是会把更新过后的静态文件推送到master分支上。

由于master分支和source分支实际上是相互独立的两个普通的分支,所以我们源文件和静态页面的更新也是相互独立的,故而需要手动分别执行git add . git commit git push来更新源文件,然后执行hexo d更新静态页面。

二. 老电脑上的具体操作

这里直接引用我看的一篇博客的步骤,

1.github准备

先创建一个分支hexo

将其设置为默认分支

2.打包将要推送到GitHub上的原始文件

(1)clone该仓库到本地(clone的是hexo默认分支)

git clone git@github.com:username/username.github.io.git

(2)下载的文件夹里仅留下.git 文件夹,其他的文件都删除

(3)找见我们hexo原位置,将hexo文件夹内除.deploy_git 以外都复制到clone下来的文件夹中

注意:1.现在clone下来的文件夹内应该有个.gitignore文件,用来忽略一些不需要的文件,表示这些类型文件不需要git。如果没有,右键新建,内容如下:

.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/

2.如果已经clone过主题文件,那么需要把theme主题文件夹里的 .git 也删除。因为git不能嵌套上传,最好是显示隐藏文件,检查一下有没有,否则上传的时候会出错,导致你的主题文件无法上传,这样你的配置在别的电脑上就用不了了。

3.将clone并修改以后的文件夹推送到远程库

git add .
git commit –m add_branch
git push

此时已经成功将整个网站推送到了远程库的默认分支hexo

补充:后续写文章、修改配置后的保存推送操作

至此,网站部署至master分支,整个网站备份至hexo分支。当网站的配置或文章修改后都要将远程仓库更新。首先,依次执行

git add .``git commit -m ChangeFiles(更新信息内容可改)``git push (或者git push origin hexo)

保证hexo分支版本最新。然后执行

hexo d -g

(在此之前,有时可能需要执行hexo clean),完成后就会发现,最新改动已经更新到master分支了,两个分支互不干扰!

二. 新电脑上的操作

  • 将新电脑的生成的ssh key添加到GitHub账户上
  • 在新电脑上克隆username.github.io仓库的source分支(就是存放源码的分支)到本地,此时本地git仓库处于source分支,可以执行git branch -v查看。
  • 在新电脑的username.github.io文件夹下执行npm install hexonpm installnpm install hexo-deployer-git(记得,不需要hexo init这条指令)
  • 最后执行hexo ghexo shexo d等命令即可提交成功

上面步骤中,npm install其实就是读取了packages.json里面的信息,自动安装依赖,有的小伙伴可能只执行npm install就行了,不过按照上面的三步是最稳妥的。

这里提一嘴,当新电脑上的操作成功之后,其实对于新电脑还是老电脑其实都无所谓了,任何一台电脑包括老电脑只要安装了NodeJs环境,就都可以按照在新电脑上的操作完整地复刻出一个hexo环境,你甚至可以把老电脑原有的hexo工程删掉再执行上面这几步一样可以快速构建hexo环境,可以看到步骤非常简单。

此外,为了保证同步,推荐先git pull合并更新再进行博客的编写。

参考链接

利用Hexo在多台电脑上提交和更新github pages博客 - 简书 (jianshu.com)

hexo源码上传到GitHub-以防多台电脑操作/重装系统/要将hexo移动到其他磁盘 - 巧莓兔 - 博客园 (cnblogs.com)

Hexo博客备份 - 简书 (jianshu.com)

使用hexo,如果换了电脑怎么更新博客? - 知乎 (zhihu.com)

Hexo在多台电脑上提交和更新相关推荐

  1. 一台电脑上配置多个git账号(gitee),向不同git线上仓库提交(命令行/TortoiseGit同时) 代码

    目录 1.一台电脑上实现与多个git在线仓库提交代码的实际场景 2.安装git TortoiseGit 生成SSH key 和 git的.ssh目录 创建并配置config文件 2.1.首先必须先安装 ...

  2. 如何在一台电脑上管理/切换多个github账户

    场景:比如个人person和公司work的多个github账号,这个时候在本地做操作,是无法用work账号操作person账号下的git仓库的. 当我用work提交属于person的代码的时候,会出现 ...

  3. 将Hexo从一台电脑转移至另一台电脑

    前几天利用Hexo搭建了自己的博客系统,整个搭建的过程并不复杂,但是要将自己的博客的漂亮对于一个新手来说还是比较耗时间的,它要求对配置文件里面的关键字比较熟悉,那么如何熟悉这些关键字呢?答案是:看文档 ...

  4. git在一台电脑上配置不同的仓库(多个gitee仓库、或者不同的github仓库)

    前言 在开发过程中,我们工作的时候难免会使用到两个不同的仓库,但是正常来说一电脑默认一个参考,直接会用全局命令 git config --global user.name "yourName ...

  5. 不同电脑上提交 gerrit

    同一 OA 帐号在不同电脑上提交同一分支的代码 会出现二条记录. 原因是提交电脑的 gerrrit 的 key 是不同的.此时是可以正常使用的,先提的代码先 merge  对 gerrit 上的二条记 ...

  6. 在一台电脑上使用两个github账号

    问题描述: 我公司有一个github账号,每天工作把代码传上去,我觉得代码写的好,我同时想上传到自己的github账号上面去,但是目前只有一台电脑,如何在一台电脑上面进行设置,使这一台电脑可以同时上传 ...

  7. 如何在同一台电脑上多个账户同时登陆MSN

    一般情况下,在一台电脑上只能启动一个msn进程,所以当想多个账户在同一台电脑上同时登陆时,就无法实现了.我们可以使用MSNShell来实现多个账户的同时登陆. MSNShell下载地址:http:// ...

  8. 在同一台电脑上同时安装Python2和Python3

    目前Python的两个版本Python2和Python3同时存在,且这两个版本同时在更新与维护. 到底是选择Python2还是选择Python3,取决于当前要使用的库.框架支持哪个版本. 例如:HTM ...

  9. 在同一台电脑上同时使用IE6和IE7

    编者按:最近微软发布了IE7简体中文版,有了很多改进.毫无疑问,是Mozilla的Firefox激发了微软改良浏览器的雄心.只要简单看一下IE7的接口即可充分的证明这一点,尤其是以下这些功能:新分类的 ...

最新文章

  1. Linux k8s 启动 停止 查询状态 脚本
  2. c++语言表白超炫图形_青少年编程学习之C语言怎么学?现在知道,将来不亏!...
  3. 【NLP】ACL 2021中的25个Transformers模型
  4. linux如何在a休息时运行b,Linux下如何优雅地修正命令?
  5. LiveVideoStack线上分享第三季(八):移动视频工厂 - 如何实现“快速、灵活、简单的视频剪辑框架...
  6. 重操JS旧业第十一弹:BOM对象
  7. laravel mysql 视图_视图入门:Laravel 支持的视图格式以及在路由中的基本使用
  8. 力扣45. 跳跃游戏 II(JavaScript)
  9. 2021年 RSA 大会:产品发布概览(第1天)
  10. java jodd_Jodd :一款优雅的 Java 工具集
  11. 《Android NFC 开发实战详解 》简介+源码+样章+勘误ING
  12. Moore-Penrose广义逆矩阵
  13. 通过计算机主机数来划分子网,计算机网络知识梳理(2)——子网掩码及网络划分...
  14. 服务器防火墙的作用是什么?如何设置?
  15. Java项目在Linux环境使用aspose把word转pdf乱码问题
  16. 如何把win桌面的压缩包复制到虚拟机共享文件夹中
  17. 深入研究glibc内存管理器原理及优缺点
  18. java32位怎么用eclipse_32位eclipse怎么安装?
  19. 什么是IO流?什么是IO流?
  20. FFmpeg av_frame_free崩溃可能原因

热门文章

  1. CAD修改鼠标捕捉模式
  2. 爬虫抓图全网最新方法分享,爬取轻松爬终极4K高清美图?
  3. 银河麒麟操作系统更新火狐浏览器
  4. mysql、oracle、pg、sql查询、删除重复数据保留一条
  5. VMware开启虚拟机提示“内部错误”
  6. Oracle日期格式化相关说明
  7. uniapp中uni.showToast最多显示多少个汉字?
  8. Excel单元格中输入勾、叉等特殊字符
  9. python打擂台法_御灵手游怎么打擂台 擂台战打法技巧
  10. 税务系统信息安全问题