写在前面
当换电脑的时候,或者在其他电脑想编辑自己的博客的时候,发现在
icessun.github.io
的仓库里面保存的是生成的静态页面,博客的源文件还在家里面的电脑里面,怎么样达到多终端来管理博客?github
的分支管理,正好可以解决这个问题
博客根目录
- .deploy_git
- node_modules 自定义博客需要的插件
- public 博客的网站静态文件
- scaffolds 博客文章的模版
- themes 博客主题
- source 博客的一些资源
- _config.yml 博客的配置文件
- package.json 依赖的文件,可以直接通过这个文件安装node_modules
- db.json
添加.gitignore文件
这个文件的主要作用是过滤一些不需要存放在github远程仓库的一些文件,在备份博客源代码的时候。在根目录下面没有这个文件,可以新建这个文件。
一般都包括:
public/
.deploy*/
// 因为上面这两个文件,每次generate和deploy的时候,都会更新,所以忽略这两个文件夹的更新
node_modules/
db.json
*.log
Thumbs.db
.DS_Store
博客源文件备份
远程仓库
icessun.github.io
的主分支:master
是来存放博客部署deploy
的静态文件的,可以在仓库新建一个分支,来存放博客源代码文件
- 首先在博客源文件中初始化一个
git
仓库 - 然后与远程仓库建立连接
- 在本地把源代码提交到本地版本库中
- 推送到远程仓库的源代码分支上面
$ git init
$ git remote add origin git@github.com:icessun/icessun.github.io.git
$ git add .
$ git commit -m 'add hexo-blog origin code'
$ git push origin master:dev-blog
这样就把源代码备份完毕,这个时候,可以在远程仓库里面看见dev-blog
分支,里面保存着博客源代码;
当然也可以直接在远程仓库上面手动新建一个分支dev-blog
,然后使用下面的命令:
$ git init
$ git remote add origin git@github.com:icessun/icessun.github.io.git
$ git checkout -b 分支名 // 新建一个分支
$ git add .
$ git commit -m 'add hexo-blog origin code'
$ git push origin 新建的分支名dev-blog
本地操作博客
要是源文件在本地,在自己的电脑上面,当在本地写好了博客的时候,可以先备份一下博客源文件,然后在部署静态文件
$ git add .
$ git commit -m 'add new blog'
$ git push origin master:dev-blog
部署静态文件
$ hexo g -d
// 要是安装了压缩代码的插件
$ hexo g && gulp
$ hexo d
别人电脑pull
源代码
首先要在别人的电脑上面安装好git node hexo
,然后使用克隆clone
的命令下载源代码:
// 克隆源代码到本地
git clone -b dev-blog git@github.com:icessun/icessun.github.io.git
然后在源代码的source
文件夹下的_posts
文件夹下面新建md
文件来编写博客;
最后重新的部署到远程仓库里面:在下载的源代码文件夹上面,右键打开:git-bash
npm install hexo // 安装hexo 安装完成hexo 不需要初始化hexo,否者hexo 配置参数会重置
npm install // 安装依赖库
npm install hexo-deployer-git --save // 安装部署相关配置
接着同步文件源代码到github
$ git add .
$ git commit -m 'add new blog again'
$ git pull origin dev-blog // 先拉取原来仓库的源代码文件到本地进行合并,解决了前后版本的冲突后,把现在的源代码文件push到dev-blog分支上面
$ git push origin dev-blog
最后发布新的博文
部署静态文件
$ hexo g -d
// 要是安装了压缩代码的插件
$ hexo g && gulp
$ hexo d
hexo跳过指定文件的渲染
- 把要跳过hexo解析的文件夹放在根目录下面的source文件夹下
单个文件夹下全部文件:
skip_render: test/*
单个文件夹下指定类型文件:skip_render: test/*.html
单个文件夹下全部文件以及子目录:skip_render: test/**
多个文件夹以及各种复杂情况:['*.html',FIE2017/**]
网友评论