如何备份hexo源文件到github上

本地文件备份过程

在写文章的过程中,当然希望把源文件也保存下来,于是就着手研究了一下

有直接的备份插件,但是不好用。建议还是使用这个方法。

首先.gitignore这个文件,直接通过新建txt更改名字是不被git识别的,说多了都是泪。应该在git下输入命令

1
touch .gitignore

hexo本地文件的根目录下也有一个.gitignore文件,是hexo d部署到github时hexo需要忽略掉不需要的文件。

为了我的.gitignore不被hexo本身的.gitignore影响,我在hexo根目录的上一级文件夹git init。

接下来就是写.gitignore文件了,我们把hexo本地博客的文件上传到github的时候不需要上传一些文件,比如public文件夹和node_modules内的一大堆npm模块。node_modules文件夹内太多模块,git add .会很久。我选择只add文件夹node_modules下的.package-lock.json文件,根据这个json文件,npm就可以把全部模组再次下载下来。


于是在.gitignore内添加两行

1
2
myblog/node_modules/*
!myblog/node_modules/.package-lock.json

第一行的含义是忽略 myblog/node_modules/ 目录下的所有内容,第二行的意思是但不忽略 myblog/node_modules/.package-lock.json 文件,这样我就可以只保留住.package-lcok.json文件了。


git add .的时候遇到了问题,git提示我主题next下有.git,无法提交。

实际上这个.git是主题开发者开发主题时留下来的,直接删除这个文件夹就行,不影响正常使用


.deploy_git文件夹hexo g时可以重新生成。

对于我们来说不需要备份。于是再在.gitignore添加一行

1
.deploy*/

博客根目录下的public文件夹是hexo生成的静态网站文件

hexo cl可以删除掉public文件夹,hexo g又可以重新再次生成,不需要备份。

.gitignore内再加一行:

1
myblog/public/

这时候就可以正常的用git add,commit,push把本地的hexo博客文件备份到GitHub上了,可是上传上去发现少了一些文件?

这是因为hexo根目录下的.gitignore在作怪,两个.gitignore一起生效,把一些提交文件给忽略了。

hexo根目录下的.gitignore是一定要在的,否则hexo d推送文件时会出现问题,因此肯定不能删除。

除非你打算备份一次文件就删除一次hexo根目录下的.gitignore,等推送完后再把文件恢复回来。(但这样太麻烦了)

但是我想起来之前折腾很久的.gitignore不生效问题,也许我把hexo根目录下的.gitignore加个后缀txt

git就不识别了,但是hexo能够识别呢?

测试了一下真的可行,hexo d的时候hexo还是识别到了自己根目录下的.gitignore,部署时还是忽略掉了不需要的文件,没有问题。


更换设备后的操作

另一设备上部署网站到github

先git clone 把远程仓库文件下载下来,然后在里面输入命令npm install

理论上来说hexo也会被下载,如果不能使用,那再手动安装hexo

1
npm install -g hexo-cli

.deploy_git文件夹会在hexo d时生成

然后执行命令获取SSH秘钥

1
2
3
4
git config --global user.name ""
git config --global user.email""
ssh-keygen -t rsa
cat /.ssh/id_rsa.pub

用不同于以前的设备hexo d,部署网站时,可能会发现commit次数怎么变成一次了?

这是因为设备不同,commit时的设备ID不一样。用一台设备hexo d文件到GitHub上后,只能看到该设备的commit次数。

github pages只会挑最后一次commit来形成,无论你是哪个commit id,因此不会有影响。


另一设备上备份hexo源文件到另一个github仓库

还是来到hexo根目录下的上一级,直接还是git add commit push走一套流程就行

因为.git文件夹内的文件没有被修改,那么设置依旧是有效的。