Hexo博客搭建(三):多设备同步
- 1.1.2.0.1. 问题1:由于我是先配置好博客,才处理多端同步问题,然后直接在GitHub新建hexo分支,然后对本地文件夹和仓库关联,然后执行push,发现无法提交,查看GitHub仓库自动生成管理文件存在,然后拉取分支,本地文件和自动生成管理文件混合。
- 1.1.2.0.2. 问题2: modified: ../themes/next (modified content)
- 1.1.2.0.3. 问题3:Hexo deploy 发布不成功
- 1.1.2.0.4. 问题4:npm WARN enoent ENOENT: no such file or directory, open ‘/node_modules/supertest/package.json’本地文件package丢失
Hexo搭建通过GitHub版本控制思想多端同步
导语
hexo 是一个静态博客工具,唯一的不足就是源文件无法同步,几乎只能在一台电脑上写博客。而解决方法之一是使用Github 来管理我们的 hexo 源文件。
思路
在博客的远程仓库即GitHub的博客youraccount.github.io仓库新建一个分支,用这个分支来存储博客的源文件。Master是hexo deploy的自动生成和管理、hexo分支存储博客的源文件。一个负责管理hexo发布的自动管理,一个用于存储本地的博客源文件,用于实现多端源文件相同。
一:在搭建博客开始就将多端同步同时建立
博客搭建:一详情参考
同步思路与Github推拉源码思路相同,使用git指令,保持本地的博客文件与Github上的博客文件相同即可,其步骤如下:
1. 使用hexo搭建部署Github博客
// 在本地博客根目录下安装hexo
npm install hexo
// 初始化hexo
npm init
// 安装依赖
npm install
// 安装部署相关的配置
npm install hexo-deployer-git
2. 上传博客工程
上一步部署博客到Github以后,我们可以在Github仓库的master分支上看到我们上传的博客文件。
但是这个博客文件是不包含hexo配置的,所以我们需要新建分支,使用git指令将带hexo配置的Github工程文件上传到新建的分支上。
在本地博客根目录下使用git指令上传项目到Github:
// git初始化
git init
// 添加仓库地址
git remote add origin https://github.com/用户名/仓库名.git
// 新建分支并切换到新建的分支
git checkout -b 分支名
// 添加所有本地文件到git
git add .
// git提交
git commit -m ""
// 文件推送到hexo分支
git push origin hexo
其他设备上clone下Github上新建的分支的文件到本地
在另一台设备上使用git指令下载Github新建分支上的文件:
// 克隆文件到本地
git clone -b 分支名 https://github.com/用户名/仓库名.git
3. 部署到Github
// 安装hexo
npm install hexo
// 注意这里不需要hexo初始化:hexo init;否则之前的hexo配置参数会重置
// 安装依赖库
npm install
// 安装部署相关配置
npm install hexo-deployer-git
4. 同步项目源文件到Github
// 添加源文件
git add .
// git提交
git commit -m ""
// 先拉原来Github分支上的源文件到本地,进行合并
// 分支名后面的“--allow-unrelated-histories”是为了弹出“fatal: refusing to merge unrelated histories.”的错误
git pull origin 分支名 --allow-unrelated-histories
// 比较解决前后版本冲突后,push源文件到Github的分支
git push origin 分支名
至此多设备同步到此为止
5. 问题
Deployer not found: git
在终端执行命令:npm install hexo-deployer-git --save
然后继续执行hexo deploye指令进行部署。
- fatal: could not read Username for ‘ https://github.com ‘: Invalid argument
由于使用的是https协议,安全性较高,所以系统终端不允许部署,所以我们该用 ssh,修改本地博客hexo配置文件_config.yml,将repository参数修改如下:
继续执行hexo deploye指令进行部署。 Could not read from remote repository
这是因为系统没有添加github的ssh信任到本机,所以我们要在命令行执行:ssh -T git@github.com
yes
博客搭建:二详情参考
1. 创建仓库,youraccount.github.io
2. 创建两个分支:master 与 hexo
3. 设置hexo为默认分支(因为我们只需要手动管理这个分支上的Hexo网站文件,master分支为hexo deploy自动生成和管理)
4. 使用git clone git@github.com:youraccount/youraccount.github.io.git拷贝仓库
5. 在本地youraccount.github.io文件夹下通过Git bash依次执行npm install hexo、hexo init、npm install 和 npm install hexo-deployer-git(此时当前分支应显示为hexo)
6. 修改_config.yml中的deploy参数,分支应为master
7. 依次执行git add .、git commit -m “…”、git push origin hexo提交网站相关的文件
8. 执行hexo generate -d生成网站并部署到GitHub上
这样一来,在GitHub上的youraccount.github.io仓库就有两个分支,一个hexo分支用来存放网站的原始文件,一个master分支用来存放生成的静态网页
注意:- 分支的创建一定要在Git Bash(博客目录下)。 切不可在GitHub仓库直接点击生成新的分支,我在仓库直接生成分支,导致一直上传失败,然后需要先pull仓库文件,导致本地出现源文件和自动生成管理文件混合
当不知道当前分支的时候查看当前分支 git branch -v
MacBook-Pro:Zomfice.github.io WZY$ git branch -v
* hexo 2d90e51 修改
master 7b6392f [ahead 1, behind 14] 提交分支hexo
问题1:由于我是先配置好博客,才处理多端同步问题,然后直接在GitHub新建hexo分支,然后对本地文件夹和仓库关联,然后执行push,发现无法提交,查看GitHub仓库自动生成管理文件存在,然后拉取分支,本地文件和自动生成管理文件混合。
解决:
首先进行版本回滚,回滚到之前版本
远程分支存在需要删除,git怎么删除远程分支
本地也初始化了一个分支(注: git checkout -b 分支名 新建分支并切换到新建的分支),删除本地分支
-
查看远程分支
git remote -v
查看本地分支
git branch -v
新建并切换到新的分支
git checkout -b 分支名
删除远程分支
git branch -r -d origin/branch-name
删除本地分支
git branch -d xxxxx
删除掉没有与远程分支对应的本地分支
git fetch -p
切换分支
git checkout -b hexo
git reflog
git 状态
git status
问题2: modified: ../themes/next (modified content)
解决:hexo g 生成静态页面
hexo d 部署hexo之后提交代码
问题3:Hexo deploy 发布不成功
问题4:npm WARN enoent ENOENT: no such file or directory, open ‘/node_modules/supertest/package.json’ 本地文件package丢失
解决:重新对npm配置,但是不要hexo init,重新对npm和hexo建立依赖,如果不行,执行npm cache clean之后再执行
二:(推荐)在搭建完成博客之后将多端同步加入
通过教程一搭建完成博客,然后通过加入多端同步,只需对前文 博客一步骤进行精简就好.将本地仓库与远程仓库建立连接,创建远程分支,并切换到新建分支。
// git初始化
git init
// 添加仓库地址
git remote add origin https://github.com/用户名/仓库名.git
// 新建分支并切换到新建的分支
git checkout -b 分支名
// 添加所有本地文件到git
git add .
// git提交
git commit -m ""
// 文件推送到hexo分支
git push origin hexo
//执行生成网站并部署到GitHub上
hexo g -d
参考:
1. 在新设备中安装node.js和Git
2. 给新设备添加SSH KEYS
在Git Bash中输入:
ssh-keygen -t rsa -C “你的邮箱地址”
按三次回车(密码为空),生成密匙。
在C:\Users\Administrator.ssh中(Administrator为自己对应的管理员账号),得到两个文件,分别为id_rsa和id_rsa.pub。
打开id_rsa.pub,复制全文。进入GitHub中的SSH设置 ,Add SSH key,粘贴进去。
3. 新设备同步
使用git clone git@github.com:youraccount/youraccount.github.io.git拷贝仓库(默认分支为hexo)
在本地得到的youraccount.github.io文件夹下通过Git bash依次执行下列指令:
npm install -g hexo、npm install、npm install hexo-deployer-git即可将最新的博客文件全部同步。
四:日常维护使用
在本地对博客进行修改(添加新博文、修改样式等等)后,通过下面的流程进行管理:
1. hexo new "文章名"
2. git add .
3. git commit -m “…”
4. git push origin hexo
5. hexo g -d
参考:
参考
Git
多设备
- 多设备同步hexo搭建的Github博客
- hexo多设备同步与版本控制实现
- hexo 博客利用 github 分支同步源文件
- 在Github上面搭建Hexo博客(四):使用不同电脑维护
- HEXO换电脑麻烦解决
- 使用hexo,如果换了电脑怎么更新博客?